2017-07-27 6 views
-1

私が始めたこのプログラムは、データを取り込んでそれをソートして出力することが想定されています。プログラムのソートや配列のコピーで修正できませんか?

問題は私がコードをソートすると、何らかの理由で出力されて最初の2つの値が0になるということです。私はこれが私のソート機能に間違っていると思っていますが、私はそれを理解することはできません。私も別の配列 "sortedata"に "データ"と値をコピーしたいが、私はそれがゼロにすべての値を設定するだけのセットアップを持っている方法。これらの2つの問題を助けてください。あなたはこれをしようとした場合

自身はちょうどあなたがして、第二に置き換えるi <= sizeからi < size

をダブルで入力したので、ちょうど5は文句を言わない、それはまず5.0

#include "stdafx.h" 
#include <iostream> 
#include <string> 
using namespace std; 

//functions 

void input(double data[], double size) { 


    //enter data 
     for (int i = 0; i < size; i++) { 
      cout << "Enter data element \n"; 
      cin >> data[i]; 
     } 

     //output original 
     cout << "Original Data: \n"; 

     for (int i = 0; i < size; i++) { 
      if (i) { 
       cout << ", "; 
      } 

      cout << data[i]; 
     } 
     cout << "\n"; 

} 
void copy(double source[], double dest[], double size) { 
    for (int i = 0; i <= size; i++) 
     source[i] = dest[i]; 
} 
void sort(double data[], double size) { 

    for (int i = 19; i >= 0; i--) 
    { 
     for (int i = 0; i< 10; i++) 
     { 
      if (data[i]>data[i + 1]) 
      { 

       double temp = data[i + 1]; 

       data[i + 1] = data[i]; 

       data[i] = temp; 

      } 
     } 
    } 

} 
void display(double data[], double size) { 

    //output sorted 

    cout << "Sorted Data \n"; 

    for (int i = 0; i < size; i++) { 
     if (i) { 
      cout << ", "; 
     } 

     cout << data[i]; 
    } 

} 

int main() 
{ 
    //variables 
    bool check = true; 
    double size = 0; 
    double data[20] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; 
    double sortedata[20] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; 

    //input 
    while (true) { 

     //input 
     cout << "Enter data item count <1-20> \n"; 
     cin >> size; 

     //check 
     if (size < 1 || size > 20) { 
      cout << "Item count is NOT within required range. The required range is 1 to 20. \n" << "Bye \n"; 
      break; 
     } 

     input(data, size); 
     break; 
    } 
    //copy 
    //copy(data, sortedata, size); 

    //sort 
    sort(data, size); 

    //display 
    display(data, size); 

    return 0; 
} 
+2

'copy'関数のループ条件を詳しく見てください。それは正しいrealltですか? –

+1

そしてsort関数は、渡された 'size'引数をなぜ使用しませんか? –

+0

さらに、ユーザーが間違った範囲でサイズを入力すると、ループ*から抜け出し、データが入力されていなくても並べ替えと表示が続行されます。代わりにループを 'continue'してください。 –

答えて

1

にする必要がある仕事、コピー機能にする必要があります知っていますソート関数replace i < 10i < size - 1

関連する問題