有人可以指出我错在哪里吗?
Can someone pinpoint where I am wrong?
我正在尝试为我的平均成绩制作一个计算器,但我似乎找不到我错在哪里。
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int main()
{
string subject[17] = {"Biology", "French"}; //"Sport", "Ed.Antreprenoriala", "Geografie", "Mate", "TIC", "Psihologie", "Romana", "Chimie", "Fizica", "Istorie", "Engleza", "Religie", "Info", "Desen", "Muzica"};
int mark, numberOfMarks;
float sumaNote = 0;
double average, averageSum = 0, finalAverage;
for(int i=0; i<2; i++){
cout << subject[i] << ":" << "\n";
cout << "How many marks?" << "\n";
cin >> numberOfMarks;
for(int j=0; j < numberOfMarks; j++){
cin >> mark;
sumaNote += mark;
}
average = sumaNote / numberOfMarks;
averageSum += round(average);
}
cout << endl;
finalAverage = averageSum/2;
cout << finalAverage;
getch();
return 0;
}
它应该是这样工作的:
1)从字符串数组中取出一个主题;
2)询问我对该科目的分数;
3)平均分数之和;
4)重复直到超出数组元素(主题)
5) 获取所有科目平均值的总和,取平均值并输出答案;
***每个非自然平均值都需要向上或向下舍入(因此需要 round() 函数);
***一共17个科目,我只用了2个做实验;
示例:生物学:
多少分?
2个
8个
10(应该是 (8+10)/2)
法语:
多少分?
3个
7
9
10(应该是 (7+9+10)/3
输出应该是 9+9/2 = 9
但我的代码没有这样做,也不知道为什么
您需要在 i
循环中添加 sumaNote = 0;
。
关于编译:
header 不再使用,主函数末尾的 getch() 也不再使用。
- 使用像 CodeBlocks IDE、Repl 在线编译器这样的现代编译器来避免使用过时的代码。
节目:
- 添加了
len
自动计算数组长度的变量。
- 在进入下一个主题之前,循环结束时总和重置为 0。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
string subject[] = {"Biology", "French"}; //"Sport", "Ed.Antreprenoriala", "Geografie", "Mate", "TIC", "Psihologie", "Romana", "Chimie", "Fizica", "Istorie", "Engleza", "Religie", "Info", "Desen", "Muzica"};
int mark, numberOfMarks;
float sumaNote = 0;
double average, averageSum = 0, finalAverage;
// Find length of array
int len = sizeof(subject)/sizeof(subject[0]);
// changed limit to len
for(int i=0; i<len; i++) {
cout << subject[i] << ":" << "\n";
cout << "How many marks?" << "\n";
cin >> numberOfMarks;
for(int j=0; j < numberOfMarks; j++){
cin >> mark;
sumaNote += mark;
}
average = sumaNote / numberOfMarks;
averageSum += round(average);
sumaNote = 0; // important to reset sum
}
cout << endl;
finalAverage = averageSum/len;
cout << finalAverage;
return 0;
}
我正在尝试为我的平均成绩制作一个计算器,但我似乎找不到我错在哪里。
#include <iostream>
#include <conio.h>
#include <cmath>
using namespace std;
int main()
{
string subject[17] = {"Biology", "French"}; //"Sport", "Ed.Antreprenoriala", "Geografie", "Mate", "TIC", "Psihologie", "Romana", "Chimie", "Fizica", "Istorie", "Engleza", "Religie", "Info", "Desen", "Muzica"};
int mark, numberOfMarks;
float sumaNote = 0;
double average, averageSum = 0, finalAverage;
for(int i=0; i<2; i++){
cout << subject[i] << ":" << "\n";
cout << "How many marks?" << "\n";
cin >> numberOfMarks;
for(int j=0; j < numberOfMarks; j++){
cin >> mark;
sumaNote += mark;
}
average = sumaNote / numberOfMarks;
averageSum += round(average);
}
cout << endl;
finalAverage = averageSum/2;
cout << finalAverage;
getch();
return 0;
}
它应该是这样工作的:
1)从字符串数组中取出一个主题;
2)询问我对该科目的分数;
3)平均分数之和;
4)重复直到超出数组元素(主题)
5) 获取所有科目平均值的总和,取平均值并输出答案;
***每个非自然平均值都需要向上或向下舍入(因此需要 round() 函数);
***一共17个科目,我只用了2个做实验;
示例:生物学: 多少分? 2个 8个 10(应该是 (8+10)/2) 法语: 多少分? 3个 7 9 10(应该是 (7+9+10)/3
输出应该是 9+9/2 = 9
但我的代码没有这样做,也不知道为什么
您需要在 i
循环中添加 sumaNote = 0;
。
关于编译:
header 不再使用,主函数末尾的 getch() 也不再使用。 - 使用像 CodeBlocks IDE、Repl 在线编译器这样的现代编译器来避免使用过时的代码。
节目:
- 添加了
len
自动计算数组长度的变量。 - 在进入下一个主题之前,循环结束时总和重置为 0。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
string subject[] = {"Biology", "French"}; //"Sport", "Ed.Antreprenoriala", "Geografie", "Mate", "TIC", "Psihologie", "Romana", "Chimie", "Fizica", "Istorie", "Engleza", "Religie", "Info", "Desen", "Muzica"};
int mark, numberOfMarks;
float sumaNote = 0;
double average, averageSum = 0, finalAverage;
// Find length of array
int len = sizeof(subject)/sizeof(subject[0]);
// changed limit to len
for(int i=0; i<len; i++) {
cout << subject[i] << ":" << "\n";
cout << "How many marks?" << "\n";
cin >> numberOfMarks;
for(int j=0; j < numberOfMarks; j++){
cin >> mark;
sumaNote += mark;
}
average = sumaNote / numberOfMarks;
averageSum += round(average);
sumaNote = 0; // important to reset sum
}
cout << endl;
finalAverage = averageSum/len;
cout << finalAverage;
return 0;
}