C言語についての質問です。 画像の問題のプログラムをつくるのに以下のように書きましたが、

画像

C言語関連 | プログラミング24閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

0

その他の回答(2件)

0

#include<stdio.h> #include<stdlib.h> #include<time.h> #define MM 8 int main(void) { int i,j,x,y,z,c[MM],d[MM],t; srand((unsigned)time(NULL)); for(i=0;i<MM;i++){ c[i]=0; d[i]=i; } for(i=0;i<100;i++){ while(1){ x=rand()%MM; y=rand()%MM; z=rand()%MM; if((x!=y)&&(x!=z)&&(y!=z))break; } c[x]++; c[y]++; c[z]++; } printf("----------------------\n"); for(i=0;i<MM;i++)printf("%3d回 %10cさん\n",c[i],'A'+d[i]); printf("----------------------\n"); for(i=0;i<MM-1;i++){ for(j=i+1;j<MM;j++){ if(c[i]<c[j]){ t=c[i]; c[i]=c[j]; c[j]=t; t=d[i]; d[i]=d[j]; d[j]=t; } if((c[i]==c[j])&&(d[i]>d[j])){ t=c[i]; c[i]=c[j]; c[j]=t; t=d[i]; d[i]=d[j]; d[j]=t; } }} printf("----------------------\n"); for(i=0;i<MM;i++)printf("第%d位 %3d回 %10cさん\n",i+1,c[i],'A'+d[i]); printf("----------------------\n"); return 0; } 3人を選んだ時に重複しないように選ぶのは無理、、、、 だから、重複した場合はカウント外にしている。 画像通りだと考慮しなくても良いかと思うが、、、、 同点の場合はA-G順に並ぶようにした。

0

#include <stdio.h> #include <math.h> #include <string.h> main(){ int i,j,n,count[8]; unsigned char x; int w,a=8; char work[10]; char name[8][10]={"Aさん","Bさん","Cさん","Dさん","Eさん","Fさん","Gさん","Hさん"}; for(n=0;n<8;n++){ count[n]=0; } for(i=1;i<=100;i++){ x=rand()%8; count[x]++; } for(i=0;i<a;i++){ printf("第%d位 %3d回 %s\n",i+1,count[i],name[i]); } for(i=0; i<a; i++){ for(j=0; j<(a-i)-1; j++){ // printf("%d %d %d %d\n", j , count[j], j+1 , count[j+1]); if (count[j] < count[j+1]) { // printf("chg\n"); w=count[j+1]; count[j+1]=count[j]; count[j]=w; strcpy(work,name[j+1]); strcpy(name[j+1],name[j]); strcpy(name[j],work); } } for(int k=0;k<a;k++){ // printf("第%d位 %3d回 %d\n",k+1,count[k],k); } } printf("----------------------\n"); for(i=0;i<a;i++){ printf("第%d位 %3d回 %s\n",i+1,count[i],name[i]); } printf("----------------------\n"); }