2017-06-01 16 views
-3

私はプログラムが私に配列の中で最も低い値と最も高い値を与えるようにしようとしています。値の出力が間違っています

ここに私のコードです:

 int z=10; 
    int a[z]={1,2,3,4,5,6,7,8,9,10}; 

    for (int x=1;x<=10;x++) { 
    cout << "How many pancakes were eaten by P"<<x<<endl; 
    cin >> a[x];} 
int maxPancakes = a[0]; 
int glutton; 
int minPancakes = a[0]; 
int mN; 

for (int x = 0; x <= z; x++) { 

    if (a[x] >= maxPancakes) { 

     maxPancakes = a[x]; 
     glutton = x; 
    } 

    else if (a[x] <= minPancakes) { 

     minPancakes = a[x]; 
     mN = x; 

    } 
} 

最高値のコードが動作しているが、最も低い値のコードは私に間違った値(ランダムな大きな数字)を与え続けている

私は」何か助けていただきありがとうございます。

+3

ようこそ!デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:[小さなプログラムのデバッグ方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) – NathanOliver

+2

'a'と' z'の定義は何ですか? –

+1

変数を初期化する必要があります。変数を初期化する必要があります。そうでない場合は、メモリ内のその場所に残った値で開始します。 'glutton = 0'、' mN = std :: numeric_limits :: max() 'となります。また、 'a [0]'の初期値は何ですか? – 0x5453

答えて

0

まずは標準ライブラリを使用してください。それはあなたの人生をより簡単にし、コードをより安全に(そしてほとんどの場合、より速く)します。

C++ 11以降では、std::arrayを使用できます。古いC++標準で作業している場合は、std::vectorを使用できます。

あなたのコードでは10個の要素で配列を作成していますが、2番目のループでは11回反復しています。 a[10]の値は何でもかまいません(任意の値)。0,1,2,3,4,5,6,7,8,9、... 10

の値は未定義です。あなたがa[1]の値を設定している最初のforループ(第2要素)で

a[2](第3要素)、...、a[10](第十一要素、悪いです!)。

このループを修正し、何が起こるかを確認します。また、gdbよりも簡単なもので "デバッグ"を開始することもできます(素晴らしいbtwです。この「ランダムな大きな数字」がいつ正確に表示されるかを見るためには、すべての繰り返しで値(約std::cout)を印刷するだけです。スタックオーバーフローへ

EDIT

for (int x = 0; x < 10; x++) 
{ 
    cout << "How many pancakes were eaten by P" << x << endl; 
    cin >> a[x]; 
} 

int maxPancakes = a[0]; 
int glutton; 
int minPancakes = a[0]; 
int mN; 

for (int x = 0; x < z; x++) 
{ 

    if (a[x] > maxPancakes) 
    { 

     maxPancakes = a[x]; 
     glutton = x; 
    } 
    else if (a[x] < minPancakes) 
    { 

     minPancakes = a[x]; 
     mN = x; 
    } 
} 
+0

したがって、forループ(x = 0、x <10、x ++)、私はそれを試みましたので、残念ながらそれはまだ私に乱数を与えています。 –

+0

@MarioSOUPER私の答えを編集し、サンプルコードを追加しました。私はあなたのコードを変更しようとせず、間違いを修正しようとしました。 'if'と' for'の文に注意してください。 – dptd

関連する問題