2017-03-12 9 views
-1

ここではラボの目的です。各番号が検索されると、その番号が画面に表示されます。ファイルの終わりに達すると、数値は数値順にソートされ、結果が表示されます。読書、そして(C++)をソート

int main(){ 
    fstream infile; 
    int numbers[25], size = 0, i = 0; 

    infile.open("lab1.txt"); 
    if (infile.fail()) 
    { 
     cout << "Error Opening File" << endl; 
    } 
    while (!infile.eof()) 
    { 
     infile >> numbers[i]; 
     cout << numbers[i] << endl; 
     i++; 
    } 


    size = i; 
    cout << size << " number of values in file" << endl; 

    for (int i = 0; i < size; ++i) { 
     for (int j = 0; j < size - i - 1; ++j) { 
      if (numbers[j] > numbers[j + 1]) 
      { 
       int temp = numbers[j]; 
       numbers[j] = numbers[j + 1]; 
       numbers[j + 1] = temp; 
      } 
     } 
    } 

    infile.close(); 

    return 0; 

} 

それは無限ループに結果として保持します。

は、ここに私のコードです。なぜ誰が知っていますか?私は任意のヘルプは、あなたが

+0

を試してみてください? –

+0

私たちはクラスではまだ、私の教授は、私たちは今、自分で実際のループとロジックを使用してソートするために望んでいることを教えられていなかった@JesperJuhl:\ファイルを開くために失敗した場合は –

+0

かかわらず、ありがとう、あなただけのメッセージを印刷しておきます行く。 – Shibli

答えて

0

宣言からi変数を削除し感謝感謝します。変数sizeだけを使用してください。

int main(){ 
    fstream infile; 
    int numbers[25], size = 0; 

    infile.open("lab1.txt"); 
    if (infile.fail()) 
    { 
     cout << "Error Opening File" << endl; 
    } 
    while (!infile.eof()) 
    { 
     infile >> numbers[size]; 
     cout << numbers[size] << endl; 
     size++; 
    } 

    cout << size << " number of values in file" << endl; 

    for (int i = 0; i < size - 1; ++i) { 
     for (int j = i+1; j < size; ++j) { 
      if (numbers[i] > numbers[j]) 
      { 
       //..... 
0

はエヴァー[STD ::ソート](http://en.cppreference.com/w/cpp/algorithm/sort)のことを聞いた

char x; 
while (infile.get(x)){ 
    //add numbers to array 
} 
+0

がクラッシュ常に、その後の数字の束を表示するため、最初のループが無限大であるあなたは、この答えに拡大することができると考えていますか? – GraphicsMuncher

関連する問題