プログラムに構造体の配列を含める方法は?


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 );
}

問題が発生する可能性があるため、タブの印刷は避けたいと思います。



Source link

コメント

タイトルとURLをコピーしました