コンマで区切られた入力
Posted: 2009年2月24日(火) 14:15
名前、学籍番号、得点(5教科)がコンマで区切られているデータが10人分ある。平均点の高い順にソートして、60点以上が合格する。1教科でも0点があれば、不合格となる。このプログラムを作成せよ。という問題なのですが、コンマで区切るのではなく、空白で区切る問題なら
#include <stdio.h>
#include <math.h>
#define N 50
main()
{
int i,l,n,s,j,m,max1,max4,max5,max6,max7,max8;
int E[N],K[N],M[N],R[N],S[N],G[N],H[N];
char *name[N][10], *bangou[N][10],*max2,*max3;
for(i=0;i<N;i++){
s=scanf("%s %s %d %d %d %d %d",&name[0],&bangou[0],&E,&K,&M,&R,&S);
if(s == EOF) break;
}
n=i;
for(i=0;i<n;i++){
G = E + K + M[i] + R[i] + S[i];
H[i] = G[i] / 5;
}
for(j=0;j<i;j++){
for(m=i;m>j;m--){
if(H[m] > H[m-1]){
max1 = H[m];
max2 = name[m][0];
max3 = bangou[m][0];
max4 = E[m];
max5 = K[m];
max6 = M[m];
max7 = R[m];
max8 = S[m];
H[m] = H[m-1];
E[m] = E[m-1];
K[m] = K[m-1];
M[m] = M[m-1];
R[m] = R[m-1];
S[m] = S[m-1];
name[m][0] = name[m-1][0];
bangou[m][0] = bangou[m-1][0];
H[m-1] = max1;
E[m-1] = max4;
K[m-1] = max5;
M[m-1] = max6;
R[m-1] = max7;
S[m-1] = max8;
name[m-1][0] = max2;
bangou[m-1][0] = max3;
}
}
}
for(l=0;l<i;l++){
if(H[i]<60 || K[i] = 0 || E[i] = 0 || S[i] = 0 || M[i] = 0 || R[i] = 0){
printf("%s,%s,%d,%d,%d,%d,%d,%d,不合格\n",
name[[/url],bangou[[/url],E[[/url],K[[/url],M[[/url],R[[/url],S[[/url],H[[/url]);
}
else printf("%s,%s,%d,%d,%d,%d,%d,%d,合格\n",
name[[/url],bangou[[/url], E[[/url],K[[/url],M[[/url],R[[/url],S[[/url],H[[/url]);
}
}
このようなプログラムで上手くいくのですが、コンマで区切られたデータを
scanf("%s %s %d %d %d %d %d",&name[i][0],&bangou[i][0],&E[i],&K[i],&M[i],&R[i],&S[i]);
のように変数に代入するには、どうすればいいのでしょうか。教えてください。
#include <stdio.h>
#include <math.h>
#define N 50
main()
{
int i,l,n,s,j,m,max1,max4,max5,max6,max7,max8;
int E[N],K[N],M[N],R[N],S[N],G[N],H[N];
char *name[N][10], *bangou[N][10],*max2,*max3;
for(i=0;i<N;i++){
s=scanf("%s %s %d %d %d %d %d",&name[0],&bangou[0],&E,&K,&M,&R,&S);
if(s == EOF) break;
}
n=i;
for(i=0;i<n;i++){
G = E + K + M[i] + R[i] + S[i];
H[i] = G[i] / 5;
}
for(j=0;j<i;j++){
for(m=i;m>j;m--){
if(H[m] > H[m-1]){
max1 = H[m];
max2 = name[m][0];
max3 = bangou[m][0];
max4 = E[m];
max5 = K[m];
max6 = M[m];
max7 = R[m];
max8 = S[m];
H[m] = H[m-1];
E[m] = E[m-1];
K[m] = K[m-1];
M[m] = M[m-1];
R[m] = R[m-1];
S[m] = S[m-1];
name[m][0] = name[m-1][0];
bangou[m][0] = bangou[m-1][0];
H[m-1] = max1;
E[m-1] = max4;
K[m-1] = max5;
M[m-1] = max6;
R[m-1] = max7;
S[m-1] = max8;
name[m-1][0] = max2;
bangou[m-1][0] = max3;
}
}
}
for(l=0;l<i;l++){
if(H[i]<60 || K[i] = 0 || E[i] = 0 || S[i] = 0 || M[i] = 0 || R[i] = 0){
printf("%s,%s,%d,%d,%d,%d,%d,%d,不合格\n",
name[[/url],bangou[[/url],E[[/url],K[[/url],M[[/url],R[[/url],S[[/url],H[[/url]);
}
else printf("%s,%s,%d,%d,%d,%d,%d,%d,合格\n",
name[[/url],bangou[[/url], E[[/url],K[[/url],M[[/url],R[[/url],S[[/url],H[[/url]);
}
}
このようなプログラムで上手くいくのですが、コンマで区切られたデータを
scanf("%s %s %d %d %d %d %d",&name[i][0],&bangou[i][0],&E[i],&K[i],&M[i],&R[i],&S[i]);
のように変数に代入するには、どうすればいいのでしょうか。教えてください。