0

燃費を一覧表示するコードを作成しようとしていますが、これまでのところ機能しています。問題は、それが本来の方法で機能しないことです。以下のコードは、入力を要求し、計算された MPG とともに入力のリストを表示します。

#include<iostream>
using namespace std;
//function prototype
void CalcAverage (int arr1[], float arr2[], int size);
//global variables
int mil [3];
float gal [3];
float mpg [3];
//main program
int main()
{
char month [7];
int day [3];
cout << "Please enter the starting month" << endl;
cin >> month;

cout << "Please enter starting day entry 1" << endl;
cin >> day [0];
cout << "entry 2" << endl;
cin >> day [1];
cout << "entry 3" << endl;
cin >> day [2];
cout << "entry 4" << endl;
cin >> day [3];

cout << "Please enter gallons entry 1" << endl;
cin >> gal [0];
cout << "entry 2" << endl;
cin >> gal [1];
cout << "entry 3" << endl;
cin >> gal [2];
cout << "entry 4" << endl;
cin >> gal [3];

cout << "Please enter miles entry 1" << endl;
cin >> mil [0];
cout << "entry 2" << endl;
cin >> mil [1];
cout << "entry 3" << endl;
cin >> mil [2];
cout << "entry 4" << endl;
cin >> mil [3];

CalcAverage (mil,gal,4);

cout << "Week of" << "\t\tGallons" << "\t\tMiles" << "\t\tMPG" << endl;
cout << "_ _ _ _ _ _ _" << "\t_ _ _ _ _" << "\t_ _ _ _"  << "_ _ _ _" << endl;
cout << month <<  " " << day [0] << "\t" << gal [0] << "\t\t" << mil [0] << "\t\t" << mpg [0] <<     endl;
cout << month <<  " " << day [1] << "\t" << gal [1] << "\t\t" << mil [1] << "\t\t" << mpg [1] <<     endl;
cout << month <<  " " << day [2] << "\t" << gal [2] << "\t\t" << mil [2] << "\t\t" << mpg [2] <<     endl;
cout << month <<  " " << day [3] << "\t" << gal [3] << "\t\t" << mil [3] << "\t\t" << mpg [3] <<     endl;

system("PAUSE");

}
//function definition
void CalcAverage (int arr1[], float arr2[], int size)
{
//statements
mpg [0] = mil [0] / gal [0];
mpg [1] = mil [1] / gal [1];
mpg [2] = mil [2] / gal [2];
mpg [3] = mil [3] / gal [3];

}

コードは機能し、エラーは発生しません。ただし、コードが出力を表示すると、結果の一部が入れ替わるか、ごちゃ混ぜになるか、完全にランダムになります (3 番目の gal 入力が 1 ミル目の入力になるなど)。

4

4 に答える 4

2

配列のサイズはすべて 3 で、それぞれに 4 つの値を詰め込もうとしています。サイズを 1 増やします。

int mil [4];
float gal [4];
float mpg [4];

...

int day [4];
于 2013-10-24T02:43:15.657 に答える
2

のような配列を宣言すると、配列には、、およびmil[3]の要素が含まれることに注意してください。したがって、 の使用は無効です。配列宣言を次のように変更します。mil[0]mil[1]mil[2]mil[3]

int mil [4];
float gal [4];
float mpg [4];

[4]代わりに使う日も[3]

于 2013-10-24T02:43:46.010 に答える
1

次のようなことを行います。

cin >> day [3];

ただし、次のものしかありません。

int day [3];

配列の末尾を次の配列に上書きしています。は 3 番目ではなく 4 番目の要素であるためint day[4]、これを に変更する必要があります。day[3]

于 2013-10-24T02:42:40.273 に答える