softyaさん>>回答有難うございます
そうですね。最初はプログラミングをしていて大変だったことは何回もありましたが、いくつものプログラムを組んでいるうちに、プログラミングが楽しくなっていました。プログラミングは楽しいですよ。
asdさん>>回答有難うございます。
>実行時にユーザーに名前や点数を入力してもらうことはないのでしょうか?
いえ、ユーザーには氏名を入力してもらいだけであって、点数は入力しない方針です。
氏名を入力したら、その氏名と同じ行に格納されている点数を表示するだけです。
あと、申し遅れましたが、softyaさんにも散々「プログラムは自分で考えるものだ」っと言われまして、
もう一度、練習問題で問われているプログラムをじっくり考えながら組んだら出来ました。
ookamiさんの質問の回答のところに出来上がったコードを載せます。心配しなくても大丈夫です。
ookamiさん>>回答有難うございます。
>「氏名の一部を入力したら」というのが新しく出てきましたが、最初の記事との関連が分からないので、①問題文の全文と、②現状でできているソースコード を載せてもらえますか?
質問とかなりそれてしまいますが、先ほどまでプログラミングをしていました。そしたら、できました。
softyaさんに言われたとおり、よく考えて、練習問題で問われていることを何度も確認しました。(大事な部分を何度も読みました)
よく考えてプログラムを組み込んだ結果、成功しました。出来たコードを載せます。
コード:
#define JUKENNO 5 //受験者
#define SUBJECTNO 2 //二科目
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Siken{
char name[32];
int kokugo;
int rika;
};
int drawline(void);
int main()
{
struct Siken myclass[JUKENNO]= {
{"田中",70, 60},
{"鈴木",75, 66},
{"村田",60, 70},
{"太田",77, 75},
{"加藤",40, 60}
};
int i=0, h=0, sum1[SUBJECTNO];
char str[32];
for(i=0; i < SUBJECTNO; i++)
sum1[i] = 0;
for(i=0; i < JUKENNO; i++)
{
sum1[0] += myclass[i].kokugo;
sum1[1] += myclass[i].rika;
}
printf("氏名を入力してください---(田中, 鈴木, 村田, 太田, 加藤)\n");
printf("------>");
fgets(str, sizeof(str), stdin);
str[strlen(str) - 1] = '\0';
for(i=0; i < JUKENNO; i++){
if(strcmp(str, myclass[i].name) == 0)
{
printf("%6d %6d\n",myclass[i].kokugo, myclass[i].rika);
}
}
drawline();
while(h==0){
printf("終了する場合は,Enterを押してください。\n");
scanf("%c", &h);
return 0;
}
return 0;
}
int drawline(void)
{
int i;
for(i=0; i < 15; i++)
printf("-");
printf("\n");
return 0;
}
出来上がったコードです。
これでもうルール的には大丈夫そうですね。