C++で配列を使った問題なんですが

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

C++で配列を使った問題なんですが

#1

投稿記事 by ぽんた » 16年前

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);


}

いけやん

Re:C++で配列を使った問題なんですが

#2

投稿記事 by いけやん » 16年前

条件は
>999が入力されるか、入力が10回されたら
だから
>while ((count<10)&&(seisu!=999))
ここの部分は、[&]ではなく[|]になると思う。
自分的な言い回しですか
&は「と」になり
|は「か」になると思います。

non

Re:C++で配列を使った問題なんですが

#3

投稿記事 by non » 16年前

最初の
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の場合はないという考えです。

non

Re:C++で配列を使った問題なんですが

#4

投稿記事 by non » 16年前

いけやんさんへ
>while ((count<10)&&(seisu!=999))
であっています。
whileはこの条件が成り立っている間繰り返すという意味です。

脱出条件が
>999が入力されるか、または、入力が10回されたら
ですから
ループ条件は
10回よりすくなく、かつ、999でない間になります。

box

Re:C++で配列を使った問題なんですが

#5

投稿記事 by box » 16年前

他の方も言及されているとおり、「いきなり」999を入力したときにどうするか、
という点についての確認が必要でありましょう。

s-rush

Re:C++で配列を使った問題なんですが

#6

投稿記事 by s-rush » 16年前

最初の
for(i=0;i<10;i++)
 {
  atai=0;
 }
を見る限り、各配列に初期値0を代入しているんですよね?

では宣言の時に合わせて初期化してしまいましょう。

int atai[10]={0};

このように書いてあげれば、すべてに0が入っている状態になります。
あとは他の方がおっしゃられているように、いきなり999が入力されたときの処理を考える必要がありますね。

いけやん

Re:C++で配列を使った問題なんですが

#7

投稿記事 by いけやん » 16年前

nonさん
ぽんたさん
失礼しました。

nonさんご指摘
ありがとうございます。

>10回よりすくなく、かつ、999でない間になります。
10より少なく、999でない場合の両方を満たしている
その間、回れって事であってるんですね、すいませんでした。

閉鎖

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