[ad_1]
C++
#include<stdio.h> #include<string.h> struct kelompok{ char idpegawai[5]; char nama[10]; int umur; kelompok(){} kelompok( const char * id, const char * n, int u ) { strcpy( idpegawai, id ); strcpy( nama, n ); umur = u; } void print() { printf("%s\t | %s | %d\n", idpegawai, nama, umur ); } }; int main(void) { struct kelompok k1( "P001", "Alvionina", 18 ); struct kelompok k2( "P002", "Stevanny ", 18 ); struct kelompok k3( "P003", "Joanita ", 18 ); struct kelompok k4( "P004", "Revan ", 18 ); printf("idpegawai | nama | umur \n"); printf("================================\n"); k1.print(); k2.print(); k3.print(); k4.print(); printf("================================\n"); return 0; }
私が試したこと:
プログラムコードを構造体の inti 配列にするために変更したのはどれですか?
誰か助けてくれませんか私はまだ混乱しています。
解決策 2
プログラムは現在、C++ よりも C に似ています。 C++ では、
構造体の代わりに、クラスの方が優れており、変数はプライベートとして宣言されています。
文字列処理ははるかに簡単で安全です
C++
// strcpy(idpegawai, id);
idpegawai =id;
また、メイン プログラムのループもはるかに簡単です。
C++
int main(void) { vector <class kelompok> kel; kel.push_back({ "P001", "Alvionina", 18 }); kel.push_back({ "P002", "Stevanny", 18 }); kel.push_back({ "P003", "Joanita", 18 }); kel.push_back({ "P003", "Joanita", 18 }); kel.push_back({ "P004", "Revan", 18 }); cout << "idpegawai\t| nama\t| umur\n"; cout << "================================\n"; for (auto it=kel.begin(); it != kel.end(); ++it) { it->print(); } cout << "================================\n"; return 0; }
解決策 1
これを試して:
C++
int main() { struct kelompok kel[] = { { "P001", "Alvionina", 18 }, { "P002", "Stevanny ", 18 }, { "P003", "Joanita ", 18 }, { "P004", "Revan ", 18 }, { "", "", -1 } }; printf("idpegawai | nama | umur \n"); printf("================================\n"); for (int index = 0; kel[index].umur != -1; ++index) { kel[index].print(); } printf("================================\n");
[edit]
実際の配列名を追加しました。
[/edit]
解決策 3
リチャードがしたことを続けるために、1つの小さなこと:
C++
struct kelompok kel[] = { { "P001", "Alvionina", 18 }, { "P002", "Stevanny", 18 }, { "P003", "Joanita", 18 }, { "P004", "Revan", 18 }, { "", "", -1 } };
名前にスペースを埋め込む代わりに、 print
メソッド kelompok
フォーマット文字列で幅を指定するには:
C++
void print() { printf( "%s | %9s | %d\n", idpegawai, nama, umur ); }
問題が発生する可能性があるため、タブの印刷は避けたいと思います。
[ad_2]
Source link
コメント