因此,正如我在标题中所解释的那样,我在尝试获取数组之和时遇到了麻烦。我刚刚学会了如何创建动态数组,我做了一些关于如何计算总和的搜索。我不相信我完全理解计算总和的原因。
// Final Grade Calculator
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main(){
double minor, quiz, major;
int minorG, quizG, majorG;
minorG = 0;
cout << "Final Grade Calculator" << endl;
cout << "Input minor grade weight percent." << endl;
cin >>minor;
cout << "Input quiz grade weight percent." << endl;
cin >>quiz;
cout << "Input major grade weight percent." << endl;
cin >>major;
// Three grade categories
minor = minor/100;
quiz = quiz/100;
major = major/100;
for(int i = 1; i <=10; i++){
cout << "Input a minor grade. (Max=10)" << endl;
cin >>minorG;
int *minorGA = new int[minorG];
minorG+= minorGA[minorG];
cout << "Currently: " << i << " Grade(s)." <<endl;
}
cout << "Minor Sum: " << minorG << endl;
return 0;
}
这就是我到目前为止所遇到的麻烦,我所遇到的麻烦是在我的数组所在的for循环内,以及我在哪里得到它的总和。当我编译并运行时,我得到138,427的总和。任何帮助将不胜感激!
答案 0 :(得分:1)
我认为你用动态数组过度复杂化了。我将解释您正在做的事情,并尝试为我认为您尝试做的事情提供帮助。
在您的代码int* minorGA = new int[minorG];
中,您正在为minorG
个int
个分配内存。这里有两个问题:
minorG
增加其中一个时,它就是当时内存中的任何内容。 另一个问题是你没有释放内存,但是有些人可能认为这不是一个真正的问题。
您应该能够拥有以下内容来执行我认为您尝试做的事情:
for (int i = 0; i < 10; ++i)
{
int inputtedNumber = 0;
cout << "Enter a number" << endl;
cin >> inputtedNumber;
// add that number to some tally:
finalTally += inputtedNumber;
}
或者,如果您尝试将元素存储在数组中,则可以使用以下命令:
const int maxElements = 10;
int grades[maxElements] = {}; // this will construct all elements with 0. Without this, the elements may contain any number.
for (int i = 0; i < maxElements; ++i)
{
int inputtedNumber = 0;
cout << "Enter a number" << endl;
cin >> inputtedNumber;
// Store the number
grades[i] = inputtedNumber;
}
在说,最好使用std::vector
(知道它的大小,为你处理内存,可以增长):
std::vector<int> grades;
// Allow the user to enter as many numbers as they'd like
for (;;)
{
int input = 0;
cout << "Enter a number" endl;
cin >> input;
// Store the number. Will continue to grow
grades.push_back(input);
}