以下の5人名前、背番号、身長(高い低い)
struct Person p[5] =
{{"Messi",30,"short"},
{"Neto",20,"tall"},
{"Tenas",10,"tall"},
{"Semedo",50,"short"},
{"Roberto",40,"tall"}};
を背番号順に
Tenas 10 tall
Neto 20 tall
Messi 30 short
Roberto 40 tall
Semedo 50 short
と並べ替えるプログラムを作成したいのですが、以下のプログラムで実行すると
Messi 10 short
Neto 20 tall
Tenas 30 tall
Semedo 40 short
Roberto 50 tall
と元の順序の背番号のみ入れ替わってしまいます。
Tenas 10 tall
Neto 20 tall
Messi 30 short
Roberto 40 tall
Semedo 50 short
と出力されるようにするにはどうすればよいのかご存じの方ご教示お願い致します。
#include <stdio.h> struct Person{ char name[30]; int num; char height[10]; }; int main() { int i,j; int temp; struct Person p[5] = {{"Messi",30,"short"}, {"Neto",20,"tall"}, {"Tenas",10,"tall"}, {"Semedo",50,"short"}, {"Roberto",40,"tall"}}; for(i=0; i<5; ++i){ for(j=i+1;j<5;++j) { if (p[i].num > p[j].num) { temp = p[i].num; p[i].num = p[j].num; p[j].num = temp; } } } for(i=0;i<5;i++){ printf("%s %d %s\n", p[i].name,p[i].num,p[i].height); } return 0; }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/24 01:46
2020/07/24 01:48
2020/07/24 01:55