2016-11-11 9 views
-2

さて、私はちょうど配列で作業を始めました。この配列のループは機能しますが、まだコンパイラエラーが発生しますか?デバッグエラーランタイムチェック失敗#2 - S

誰かがこのトピックについていくつかの光を当ててください。これは私が作成した、私はそれが理にかなったと思ったが、私は何かが欠けているに違いない。 私はデバッグエラーランタイムチェックの失敗#2を取得 - エラーのS

タイプは以下の通りです:デバッグエラーランタイムチェックの失敗#2 - S

#include<iostream> 
#include<iomanip> 
#include <climits> 


//Prototypes: 
int lowestAmount(int[]); 
int highestAmount(int[]); 



using namespace std; 

int main() { 

    const int AMOUNT = 9; 

    int values[AMOUNT]; 
    int lowest, highest; 

    cout << "Please Insert 10 Numbers of your Choice: "; 
    cin >> values[0] >> values[1] >> values[2] >> values[3] >> 
     values[4] >> values[5] >> values[6] >> values[7] >> 
     values[8] >> values[9]; 
    cout << endl; 
    lowest = lowestAmount(values); 
    highest = highestAmount(values); 

    cout << "/tThe Lowest out of all of them is: " << lowest << 
     endl; 
    cout << "/tThe Highest out of all of them is: " << highest << endl ; 


    return 0; 
} 



int lowestAmount(int val[]) { 

    int lowest = INT_MAX; 
    int count = 10; 
    for (int i = 0; i < count; i++) { 
     if (val[i] < lowest) 
      lowest = val[i]; 
    } 

    return lowest; 
} 

int highestAmount(int val[]) { 
    int highest = INT_MIN; 
    int count = 10; 
    for (int i = 0; i < count; i++) { 
     if (val[i] > highest) 
      highest = val[i]; 
    } 
    return highest; 
} 

コードソート私は何が間違っていたのか分かりません。私は論理がダウンしていましたが???誰かが光を当てることができましたか?

+0

こんにちは!コードは[動作しません](http://importblogkit.com/2015/07/does-not-work/)? –

+0

それは、並べ替えのしますが、私は言うエラーを取得します。 デバッグエラー ランタイムチェック失敗#2 - S –

+0

2つの機能の両方で1を増やして9の代わりに10を入れましたが、まだエラーが発生しますか? –

答えて

2

配列インデックスはゼロから始まります。つまり、最後のインデックスは要素の量から1を引いたものです。ユーザーが10個の数字を入力し、vales[0]values[9]まで読んでいますが、配列には空きがありません。あなたは10

C++自動的に境界チェックしませんように9つの要素ではなく、10 AMOUNTニーズのための十分な大きさの配列を宣言する意味

const int AMOUNT = 9; 

int values[AMOUNT]; 

。つまり、配列の外側に書き込むと予測できない振る舞いをすることになり、プログラムが常にクラッシュすることに頼ることさえできません。

高機能と低機能の両方にバグがあり、最後の要素を無視します。配列を10要素に固定したら、それ以降はi < 10までループする必要があります。

具体的にはを送信すると、より良いヘルプが得られます。つまり、コードだけでなく、コンパイラ/デバッガのエラーを表示する必要があります。

+0

配列は開始時に0から始まりますか?だから0-9は10ですか?私は9から10に量を交換し、それは働いた!しかし、私は混乱していますか?しかし、配列が0から始まり9になるというように、10から10までインクリメントしますか?0から9までの合計は10の値ですか? –

+0

ああ申し訳ありませんが、私はコミュニティに新しいです、次回はまた、投稿にエラーを挿入するようにしていただきますありがとうございます。 –

+0

はい、0から始まり、0〜9は10の場所があることを意味します。あなたの指で数える:)これは、最初に配列を学習するときの非常に一般的な混乱の原因です。しかし、配列インデックスは0から始まり、最後の要素はサイズ-1であることを覚えておいてください。10要素の配列では、最後のものはインデックス9を持ちます。 – DUman

関連する問題