-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;
}
'copy'関数のループ条件を詳しく見てください。それは正しいrealltですか? –
そしてsort関数は、渡された 'size'引数をなぜ使用しませんか? –
さらに、ユーザーが間違った範囲でサイズを入力すると、ループ*から抜け出し、データが入力されていなくても並べ替えと表示が続行されます。代わりにループを 'continue'してください。 –