どこがおかしやら・・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たけし

どこがおかしやら・・・・

#1

投稿記事 by たけし » 16年前

int main(void)
{
float weight, kei=0, n=0, heikin, max, min;
while(1){
printf("体重データを入力して下さい:");
scanf("%f",&weight);
if(weight==0)break;
kei = kei + weight;
n++;
if(n == 1){
kei = kei + 2;
n++;
}
if(max<weight)
max=weight;
if(min>weight)
min=weight;
}
heikin=kei/n;
printf("合計:%6.1f\n人数:%6.0f\n平均:%6.1f\n最大:%6.1f\n最小:%6.1f\n",
kei,n,heikin,max,min);
return 0;
}
というプログラムでデータがなくなった場合0を入力すれば終了するようにしたいのですが
0を押すと0もデータ扱いになりminが0とでてしまいますどこが悪いのでしょうか?ご指摘お願いします。
あともうひとつなのですが。
int main(void)
{
int kaijo=(①), i=1, n;
printf("n!を求めます.nを入力して下さい:");
scanf("%d", &n);
while(②)
(③);
printf("%d! = %d\n" ,i, kaijo);
(④);
}
return 0;
}
で階乗を作るプログラムなのですが①~④はどうすればいいんでしょうか?

フリオ

Re:どこがおかしやら・・・・

#2

投稿記事 by フリオ » 16年前

 
タイトルは、内容がわかるようにしてほしい。
ソースは、読みやすいように、pre タグで字下げしてほしい。


 一つ目は、

#include <stdio.h> がない。(これは、コピーミスかな。)

"max"、"min"が、値が不定のまま"weight"と比較されている。

"n"(人数)は、整数なので"int"でいい。
if(n == 1){ 
	kei = kei + 2; 
	n ++; 
}
が、意味不明。

いきなり 0 で終了すると、0除算エラーになる。


 二つ目は、

間違っていてもいいので、まず自分で考えてみてください。
 

kazuoni

Re:どこがおかしやら・・・・

#3

投稿記事 by kazuoni » 16年前

規約をきちんと読んでください。
コードを載せる際には、プレタグを使用し、見やすくしてください。

>0を押すと0もデータ扱いになりminが0とでてしまいますどこが悪いのでしょうか?
0の時、「終了します」みたいなメッセージを出力した後に、
return 0;
で終了すればよいと思います。
が、どのように終わり方を実装したいかがわからないので、
一概には言えないですが・・・。

#自分の回答を考える前に、フリオさんの御回答を先に解決してください。

>①~④はどうすればいいんでしょうか?
とりあえずヒントを。一応丸投げは禁止ですので^^;

1、階乗の答えを代入するものなので、初期化をしておく
2、階乗を求めるのに同じ動作を何回か行って求めたい。終わる条件は?
3、n=k(n>=k)の時の階乗の値を求める式
4、n=k+1を求めるためにしなければいけない式

一度考えてみてください。

閉鎖

“C言語何でも質問掲示板” へ戻る