C++で999が入力されるか、入力が10回されたら、入力件数、最大値、最小値、合計値出力する。
999は最大値、最小値、合計に反映されないように作りたいのですが、行き詰ってしまいました。
#include <stdio.h>
void main (void)
{
int atai[10];
int i=0;
int seisu=0;
int count = 0 ;
int min=0 ;
int max=0 ;
int goukei = 0 ;
for(i=0;i<10;i++)
{
atai=0;
}
atai=seisu;
while ((count<10)&&(seisu!=999))
{
/*表示*/
printf("整数を入力してください>>");
scanf ("%d", &seisu) ;
/* 入力件数を一つふやす */
count++;
if (count==1)
/* 最小値 */
for(i=0;i<10;i++)
{
if (atai < min)
{
min = atai ;
}
/* 最大値 */
if ( atai > max)
{
max = atai ;
}
}
/* 合計値を計算する */
{
goukei+=atai;
}
}
/* 出力する */
printf ("入力は%d件です。\n",count);
printf ("最小値=%d\n", min);
printf ("最大値=%d\n",max);
printf ("合計=%d\n",goukei);
}
C++で配列を使った問題なんですが
Re:C++で配列を使った問題なんですが
条件は
>999が入力されるか、入力が10回されたら
だから
>while ((count<10)&&(seisu!=999))
ここの部分は、[&]ではなく[|]になると思う。
自分的な言い回しですか
&は「と」になり
|は「か」になると思います。
>999が入力されるか、入力が10回されたら
だから
>while ((count<10)&&(seisu!=999))
ここの部分は、[&]ではなく[|]になると思う。
自分的な言い回しですか
&は「と」になり
|は「か」になると思います。
Re:C++で配列を使った問題なんですが
最初の
for(i=0;i<10;i++)
{
atai=0;
}
atai=seisu;
何をやっているのかわかりません。ましてforから抜けたとき、iは10になってますので
atai[10]=seisu;としており非常にまずいです。
1個目のデータをいれないと脱出するかわからないので、1個目のデータ入力と2個目以降を
分けた方がわかりやすいです。
1個目のデータの時、maxとminにデータを入れます。
流れは次のようになります。
1個目のデータの入力
maxとminに1個目のデータを入れる
while ((count<10)&&(seisu!=999))
2個目のデータの入力
maxとminの更新
合計の累計
ただし、このままでは1個目のデータが999の場合はないという考えです。
for(i=0;i<10;i++)
{
atai=0;
}
atai=seisu;
何をやっているのかわかりません。ましてforから抜けたとき、iは10になってますので
atai[10]=seisu;としており非常にまずいです。
1個目のデータをいれないと脱出するかわからないので、1個目のデータ入力と2個目以降を
分けた方がわかりやすいです。
1個目のデータの時、maxとminにデータを入れます。
流れは次のようになります。
1個目のデータの入力
maxとminに1個目のデータを入れる
while ((count<10)&&(seisu!=999))
2個目のデータの入力
maxとminの更新
合計の累計
ただし、このままでは1個目のデータが999の場合はないという考えです。
Re:C++で配列を使った問題なんですが
いけやんさんへ
>while ((count<10)&&(seisu!=999))
であっています。
whileはこの条件が成り立っている間繰り返すという意味です。
脱出条件が
>999が入力されるか、または、入力が10回されたら
ですから
ループ条件は
10回よりすくなく、かつ、999でない間になります。
>while ((count<10)&&(seisu!=999))
であっています。
whileはこの条件が成り立っている間繰り返すという意味です。
脱出条件が
>999が入力されるか、または、入力が10回されたら
ですから
ループ条件は
10回よりすくなく、かつ、999でない間になります。
Re:C++で配列を使った問題なんですが
最初の
for(i=0;i<10;i++)
{
atai=0;
}
を見る限り、各配列に初期値0を代入しているんですよね?
では宣言の時に合わせて初期化してしまいましょう。
int atai[10]={0};
このように書いてあげれば、すべてに0が入っている状態になります。
あとは他の方がおっしゃられているように、いきなり999が入力されたときの処理を考える必要がありますね。
for(i=0;i<10;i++)
{
atai=0;
}
を見る限り、各配列に初期値0を代入しているんですよね?
では宣言の時に合わせて初期化してしまいましょう。
int atai[10]={0};
このように書いてあげれば、すべてに0が入っている状態になります。
あとは他の方がおっしゃられているように、いきなり999が入力されたときの処理を考える必要がありますね。
Re:C++で配列を使った問題なんですが
nonさん
ぽんたさん
失礼しました。
nonさんご指摘
ありがとうございます。
>10回よりすくなく、かつ、999でない間になります。
10より少なく、999でない場合の両方を満たしている
その間、回れって事であってるんですね、すいませんでした。
ぽんたさん
失礼しました。
nonさんご指摘
ありがとうございます。
>10回よりすくなく、かつ、999でない間になります。
10より少なく、999でない場合の両方を満たしている
その間、回れって事であってるんですね、すいませんでした。