C言語の課題
C言語の課題
課題の問題は:配列tenに初期値として格納されている10人分のテストの得点の平均点を求めるプログラムを作成しなさい。
[使用する変数]int型i,goukei
ten[10](初期値:65,70,88,90,47,66,20,95,39,50)
<実行結果>
平均点は63点です
(平均は%d(整数)で出力してよい)のことなんですが・・・
私は、#include<sutdoi.h>
void main(void) {
int i,
double avg;
int ten[10]={65,70,88,90,47,66,20,95,39,50};
for(i=0;)
printf("平均は%dです\n"avg);
}
まで作りました。多分このままじゃダメだと思うのですが、この先どうやったらいいか分かりません。
どうやったらいいですか??
[使用する変数]int型i,goukei
ten[10](初期値:65,70,88,90,47,66,20,95,39,50)
<実行結果>
平均点は63点です
(平均は%d(整数)で出力してよい)のことなんですが・・・
私は、#include<sutdoi.h>
void main(void) {
int i,
double avg;
int ten[10]={65,70,88,90,47,66,20,95,39,50};
for(i=0;)
printf("平均は%dです\n"avg);
}
まで作りました。多分このままじゃダメだと思うのですが、この先どうやったらいいか分かりません。
どうやったらいいですか??
Re:C言語の課題
-------------------------------------------------------
[使用する変数]int型i,goukei
ten[10](初期値:65,70,88,90,47,66,20,95,39,50)
-------------------------------------------------------
課題の条件はコレですよね?
ならば"double型"とか、"avg"という変数名は駄目だと思うのですが。
条件を無視してしまっていますよ。
とりあえず、プログラムでは無い場合、どのように計算するかを考えましょう。
5人分のテストの平均点を求める場合。
A:60点
B:50点
C:92点
D:78点
E:20点
(60+50+92+78+20)÷5= 平均点は60点。
----------------------------------------------------------------------
int ten[5] = {60,50,92,78,20};
int goukei = 0;
goukei = ten[0] + ten[1] + ten[2] + ten[3] + ten[4];
printf("score = %d\n",goukei/5);
----------------------------------------------------------------------
馬鹿正直にやるとこうなります。
ただ無駄がある部分があるのでどうすればいいか考えてみましょう。
[使用する変数]int型i,goukei
ten[10](初期値:65,70,88,90,47,66,20,95,39,50)
-------------------------------------------------------
課題の条件はコレですよね?
ならば"double型"とか、"avg"という変数名は駄目だと思うのですが。
条件を無視してしまっていますよ。
とりあえず、プログラムでは無い場合、どのように計算するかを考えましょう。
5人分のテストの平均点を求める場合。
A:60点
B:50点
C:92点
D:78点
E:20点
(60+50+92+78+20)÷5= 平均点は60点。
----------------------------------------------------------------------
int ten[5] = {60,50,92,78,20};
int goukei = 0;
goukei = ten[0] + ten[1] + ten[2] + ten[3] + ten[4];
printf("score = %d\n",goukei/5);
----------------------------------------------------------------------
馬鹿正直にやるとこうなります。
ただ無駄がある部分があるのでどうすればいいか考えてみましょう。
Re:C言語の課題
#include<stdio.h>
void main(void) {
int ten[10] = {60,70,88,90,47,66,20,95,39,50};
int goukei = 0;
int i;
for(i=0;i<10; i=i+1) {
ten=i+goukei;
goukei = goukei + ten[0];
goukei = goukei + ten[1];
goukei = goukei + ten[2];
goukei = goukei + ten[3];
goukei = goukei + ten[4];
goukei = goukei + ten[5];
goukei = goukei + ten[6];
goukei = goukei + ten[7];
goukei = goukei + ten[8];
goukei = goukei + ten[9];
printf("goukei = %d\n",goukei/10);
}まで出来ましたがエラー1です。
void main(void) {
int ten[10] = {60,70,88,90,47,66,20,95,39,50};
int goukei = 0;
int i;
for(i=0;i<10; i=i+1) {
ten=i+goukei;
goukei = goukei + ten[0];
goukei = goukei + ten[1];
goukei = goukei + ten[2];
goukei = goukei + ten[3];
goukei = goukei + ten[4];
goukei = goukei + ten[5];
goukei = goukei + ten[6];
goukei = goukei + ten[7];
goukei = goukei + ten[8];
goukei = goukei + ten[9];
printf("goukei = %d\n",goukei/10);
}まで出来ましたがエラー1です。
Re:C言語の課題
#include <stdio.h> void main(void) { int i, goukei=0; int ten[10]={ 60,70,88,90,47,66,20,95,39,50 }; // 問題のある場所1 for(i=0;i<10; i=i+1) { // 問題のある場所2 ten=i+goukei; // 問題のある場所3 printf("goukei = %d\n",goukei/10); }
途中まで遡ってっみましょう。
for文に { } が無い場合は次にある命令が繰り返され、
{ } が付いた場合はその中身が繰り返されます。
プログラム内では { } は同じ数だけ必要です。
つまり { を使用した場合は必ず } で閉じる必要があります。
今回の場合は必要無い { を付けている事に原因があります。
Re:C言語の課題
何度も言いますが、http://dixq.net/board/board.htmlに目を通してください。
本来、規約を無視した投稿は無視されます(ここの人たちは寛大なようですが)
>goukei=i+ten;
この式が何をしているのか理解できていますか?
本来、規約を無視した投稿は無視されます(ここの人たちは寛大なようですが)
>goukei=i+ten;
この式が何をしているのか理解できていますか?
Re:C言語の課題
for文を分解すると以下の様になります。
i=i+1 の様な 1 だけ加算する場合 i++ と記述できます。
for文の後ろに ; は必要ありません。
i はループを制御するためだけの変数なのに
goukei に何故 i を加算する必要があるのか?
また前回代入した値を上書きしています。
足していくのだから
goukei = 前回の値 + 今回の値;
となります。
for( i=0; // 最初の i の値は 0 i < A; // i が A より小さい値の間だけループする i++ // ループ毎に計算する部分 )C言語ではディクリメントと言って
i=i+1 の様な 1 だけ加算する場合 i++ と記述できます。
for文の後ろに ; は必要ありません。
i はループを制御するためだけの変数なのに
goukei に何故 i を加算する必要があるのか?
また前回代入した値を上書きしています。
足していくのだから
goukei = 前回の値 + 今回の値;
となります。
Re:C言語の課題
"goukei"を財布、そして"65"や"70"をお金だと思ってください。 そのように考えた場合、 「財布の中に65円を入れる」 「財布の中に70円を入れる」というのは下記のようになります。これは分かりますか? ------------------------------------------------ goukei += 65; goukei += 70; ------------------------------------------------ しかし、上の場合は、『財布を小銭の中に入れよう』としています。無茶苦茶です。 大体こんな感じでしょうか。 ------------------------------------------------ 65 += goukei; 70 += goukei; ------------------------------------------------ そして、プログラムのおかしなところを指摘します。 ------------------------------- for(i=0;i<ten[10]; i=i+1){ ten=i+goukei; } ------------------------------- ①10個の配列の場合、添え字が10の要素は存在しません。0から9までです。 ten[0]、ten[1]、ten[2]、ten[3]、・・・・・ ten[7]、ten[8]、ten[9]。 存在しない⇒ten[10] ②上にも書いたように、for文の中身がおかしいです。 計算するならばこのようにするべきです。 [/url]の中の数字は1ずつ増えてますよね?これをfor文にしてみて下さい。 goukei += ten[0] (ten[0] = 65) goukei += ten[1] (ten[1] = 70) goukei += ten[2] (ten[2] = 88) goukei += ten[3] (ten[3] = 90) goukei += ten[4] (ten[4] = 47) goukei += ten[5] (ten[5] = 66) goukei += ten[6] (ten[6] = 20) goukei += ten[7] (ten[7] = 95) goukei += ten[8] (ten[8] = 39) goukei += ten[9] (ten[9] = 50)
Re:C言語の課題
ものすごいスレですねw
初めてきて、「つい規約読んでませんでした!」っていうのは、
「次に投稿する際には規約違反を読んでくださいね。」
っとつけて、回答に入るっで自分はいいと思いますが・・・
ここまできてしまうと回答をしないほうが・・・っとも思ってしました。。
SCIさん、conioさん、cosmoさん、SooAさん・・・がここまで一生懸命になってくれたのですが、
自分的には、
「まず、入門ページを読んできて、それから再度質問してください。」
っとしたほうがちゃんと実力が付く気がします。
レスの経過を見ていると、入門書の一番最初のほうに書いてある事を回答してますが、
本人がまず数ページ読めばいい話ですしね^^;
余計なことですので、お気に障りましたら、削除してください。
ただ自分の考えを書きたかっただけですので。。
削除キー:kazuoni
初めてきて、「つい規約読んでませんでした!」っていうのは、
「次に投稿する際には規約違反を読んでくださいね。」
っとつけて、回答に入るっで自分はいいと思いますが・・・
ここまできてしまうと回答をしないほうが・・・っとも思ってしました。。
SCIさん、conioさん、cosmoさん、SooAさん・・・がここまで一生懸命になってくれたのですが、
自分的には、
「まず、入門ページを読んできて、それから再度質問してください。」
っとしたほうがちゃんと実力が付く気がします。
レスの経過を見ていると、入門書の一番最初のほうに書いてある事を回答してますが、
本人がまず数ページ読めばいい話ですしね^^;
余計なことですので、お気に障りましたら、削除してください。
ただ自分の考えを書きたかっただけですので。。
削除キー:kazuoni
Re:C言語の課題
しょうがないですねぇ。答え載せますよ。
とりあえず、BCCではちゃんと動きますので悪しからず。
#include<stdio.h> #include<stdarg.h> int PutStringWithFormat(char *String,int *Reserved, ...){ char Buf[1024]; va_list VaList; va_start(VaList,Reserved); vsprintf(Buf,String,VaList); va_end(VaList); fputs(Buf,stdout); return 0; } int main(){ int ten[10]={65,70,88,90,47,66,20,95,39,50}; int i,gokei; i^=i,gokei^=gokei; LOOP_START: *(&gokei)+=ten; if(++i<10) goto LOOP_START; PutStringWithFormat("平均点は%d点です\n",NULL,gokei/i); return 0; }
とりあえず、BCCではちゃんと動きますので悪しからず。
Re:C言語の課題
複数の名前を使ってコメントすることは規約違反です。規約を守った投稿をお願いします。
また、丁寧語での投稿をお願いします。
皆様せっかく丁寧に回答してくださっているのに、あまりこのようなマイナスな事は言いたくは無いのですが、
どう指摘しても規約を読まない質問者のトピックには回答しない事も大事では無いかと思います。
また、lbfuvabさんの回答は、私は規約違反を助長しているように感じませんでした。
課題はもう完成しているわけですし、自分が作った解答と、人が作った(ある意味わざと難しくしてある?)回答があったら、前者を採用するでしょう。
そういう意味で自分で考える大切さがわかるのでは無いかと感じました。
また、丁寧語での投稿をお願いします。
皆様せっかく丁寧に回答してくださっているのに、あまりこのようなマイナスな事は言いたくは無いのですが、
どう指摘しても規約を読まない質問者のトピックには回答しない事も大事では無いかと思います。
また、lbfuvabさんの回答は、私は規約違反を助長しているように感じませんでした。
課題はもう完成しているわけですし、自分が作った解答と、人が作った(ある意味わざと難しくしてある?)回答があったら、前者を採用するでしょう。
そういう意味で自分で考える大切さがわかるのでは無いかと感じました。