【2018年4月開学】東京通信大学Part.3

■ このスレッドは過去ログ倉庫に格納されています
1名無し生涯学習
垢版 |
2018/11/01(木) 12:51:55.96ID:8asb699G0
公式サイト https://www.internet.ac.jp/

前スレ
【2018年4月開学】東京通信大学Part.2 [無断転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/lifework/1523608385/l50

Part.1
https://mao.5ch.net/test/read.cgi/lifework/1504958052/

東京通信大学

・学部 学科
 情報マネジメント学部情報マネジメント学科
 人間福祉学部 人間福祉学科
・キャンパス
 東京 新宿駅前キャンパス(総合校舎コクーンタワー)
 大阪 大阪駅前サテライトキャンパス (大阪モード学園・HAL大阪 総合校舎)
 名古屋 名古屋駅前サテライトキャンパス (総合校舎スパイラルタワーズ)

設置者 学校法人 日本教育財団(旧学校法人モード学園)
2018/11/04(日) 14:12:48.86ID:Wxt2U5lV0
>>20
お題は3-4 最大・平均・最小:データだけの入力
標準入力から複数のデータ(整数)が1行に1個ずつ与えられる。 それらのデータの最大値・平均値・最小値をこの順に1行ずつ使って書き出す。
最大値・最小値は必要最小限の桁数で書き出し、平均値は、整数部は必要最小限の桁数で、小数部は小数点以下3桁まで書き出すこと。

なんだけどとりあえず

#include <stdio.h>

int main(int argc, char *argv[]){
int m, M, d, s, i;

scanf("%d", &M);
s= 0;
for(i= 0; scanf("%d", &d)== 1; i++){

s+= d;
if( d>M ) M= d;
if( d<m ) m= d;
}

printf("%d\n", M);
printf("%.3f\n", (double)s/i);
printf("%d\n", m);

return 0;
}
って書いたら最大値だけ正しく出てあとはめちゃめちゃになる
scanf("%d", &M);消したら最大値だけおかしくなるなーって感じで行ったり来たりしてる
もしかしてfor文何個かいるのかなとかintの宣言数違うのかなとか考え出したりしてもうよくわからん
22名無し生涯学習
垢版 |
2018/11/04(日) 14:16:36.04ID:oPhPs+/Z0
For 文の初期値が何故0なんだ?1で試してみたか?
23名無し生涯学習
垢版 |
2018/11/04(日) 14:23:48.22ID:oPhPs+/Z0
あとmの初期化がないぞ
24名無し生涯学習
垢版 |
2018/11/04(日) 14:38:11.41ID:4WpHwRbF0
・何故、最大値だけうまくいくか?
・最初に1行だけscanfした後にfor文でscanfするのか?

ここを考えるんだ。

与えられた数値同士を比較するんだよな。1番最初は比較するものがないから
まず各変数に最初のscanfでセットする必要があるよな。お前の場合は、最初の
scanfでMという変数に値をセットしている。だからMAXだけはうまくいく。

後はわかるな。

最後にコンパイルエラーは全部消せ。基本だ。
2018/11/04(日) 14:50:10.18ID:HS+dO3il0
>>21
scanf("%d", &M);
s= 0;

この時点で、
 >最初の文字をMに読み込んだ。
 >sに0を代入した。(←ここはダメ)
 >mには何も代入されていない(←ここがもっとダメ)

おれの場合は、最初の文字をsに読み込んで、
それをMとmに代入した。
最初の一文字を読み込んだ時点で、sとMとmは全部同じ値にしておくこと。
一文字読み込んだ時点では、最大と最小合計は全て同じ値だからだよ。
26名無し生涯学習
垢版 |
2018/11/04(日) 14:50:20.96ID:4WpHwRbF0
ついでだ。

最初のscanfで読んだMの値をsやmに代入してやるんだ、。
多分そこで詰むだろうから、先読みして記載しておく。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況