动态数组和查找值总和的问题
Trouble with dynamic arrays and finding the sum of values
正如我在标题中所解释的,我在尝试获取数组的总和时遇到了麻烦。我刚刚学会了如何创建动态数组,并就如何计算总和进行了一些搜索。我不相信我完全理解计算总和的情况。
// 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 的总和。任何帮助将不胜感激!
我认为你用动态数组把事情复杂化了。我会解释你在做什么,并尝试为我认为你想做的事情提供帮助。
在代码int* minorGA = new int[minorG];
中,您正在为minorG
量的int
分配内存。这里有两个问题:
- 您正在访问分配的内存之外的元素。分配 10 个元素时,可以访问元素 0-9。尝试访问 10 是未定义的行为(您正在尝试访问可能包含任何内容的内存部分)。
- 此数组中存储的值只是内存中的任何值,因此当您尝试将
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);
}
相关文章:
- 混合组合和继承的C++问题
- gcc和clang在表达式是否为常量求值的问题上存在分歧
- 消费者和生产者问题的双重缓冲
- 运算符继承和 cpp 核心准则 c.128 的问题
- C++中的指针和常量问题不大
- 标准::enable_if 和标准::is_arithmetic 作为模板参数的问题
- 我的问题是关于C++中数字和序列的重复以及如何打印它们?
- 涉及指针和手动实现的矩阵类的问题
- 有关纯 ECS(实体组件系统)和更新系统的问题
- 构造函数和 G++ 编译配方的问题
- 现代C++的libcurl和JSON问题
- 关于仅正确使用二传手和变量的问题
- 关于Stroustrup C++书的自动和{}列表问题
- C++正确书写和打印复数精度 (cout) 的问题?
- 具有sleep_for和sleep_until功能的 gcc 可能存在的问题
- 我有一个关于C++提升的问题:: asio 和 std :: 异步
- C++编译 strlen 和 strcpy 的问题
- 连接 MATLAB 和 Visual Studios 的问题
- Sinlge 链表,C++,删除所有和搜索功能的问题
- 反向和计数字符串的 C++ 问题