使用数组时出现问题
Issues with using arrays
我正在学习如何做数组,目前一直停留在这个项目上。我已经附加了我所拥有的,但无法弄清楚我哪里出了问题,因为程序只是继续重复而没有结束我需要的答案。
它应该允许用户输入 20 个数字,然后显示每个数字及其与输入数字的数字平均值的差异。分配的第 2 部分是修改它,以便用户可以输入最多 20 个数字,直到输入哨兵值。
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int SIZE = 12;
int numbers[12] = { 0 };
int value = 0;
int counter = 0;
int total = 0;
int average = 0;
int diffFromAvg = 0;
int SENTINEL = -1;
cout << "Please enter a positive number: " << endl;
cin >> value;
while ((counter < SIZE) && (value != SENTINEL))
{
total = total + value;
numbers[counter] = value;
counter = counter + 1;
if (counter != SIZE) {
cout << "Please enter a positive number: " << endl;
cin >> value;
}
if (counter > 0) {
average = total / counter;
for (int i = 0; i <= SIZE; i--)
{
diffFromAvg = numbers[i] - average;
cout << "Number[i]: " << numbers[i] << " Difference from Average is " <<
diffFromAvg << endl;
}
}
else {
cout << "Processing incomplete. No values in the array." << endl;
}
}
system("Pause");
return 0;
}
另一个答案同样好。 我保留了你的while((循环,但做了一些更改。明智的做法是将您的处理分开一点。 这可以分解为更小的功能
#include <iostream>
#include <string>
using namespace std;
int main() {
const int SIZE = 12;
int numbers[12];
int value = 0;
int index;
int SENTINEL = -1;
index = 0; // initialize here so you keep track of it
while ((index < SIZE) && (value != SENTINEL)) {
cout << "Please enter a positive number: " << endl;
cin >> value;
numbers[index] = value;
index++; // increment index after assigning the array value
}
// Calculate the average
int total = 0;
for (int i = 0; i < SIZE; i++) {
total += numbers[i];
};
int average = total / SIZE;
cout << "Average is: " << average << endl;
for (int i = 0; i < SIZE; i++) {
int diffFromAvg = numbers[i] - average;
cout << "Number[i]: " << numbers[i]
<< " Difference from Average is "
<< diffFromAvg << endl;
}
system("Pause");
return 0;
}
我建议你遵循IPO模式:
#include <cstdlib>
#include <iostream>
#include <iomanip>
int main()
{
constexpr std::size_t max_numbers{ 20 };
constexpr int sentinel{ -1 };
int numbers[max_numbers];
std::size_t num_count{};
int sum{};
// input:
for (int current_value;
num_count < max_numbers && std::cout << "Please enter a positive number: " &&
(std::cin >> current_value) && current_value != sentinel;
++num_count)
{
numbers[num_count] = current_value;
sum += current_value;
}
// proccess:
if (!num_count) {
std::cerr << "No input.nn";
return EXIT_FAILURE;
}
auto mean{ sum / static_cast<double>(num_count) };
// output:
std::cout.put('n');
for (std::size_t i{}; i < num_count; ++i)
{
auto distance_to_mean{ numbers[i] - mean };
std::cout << "Number " << std::setw(2) << i + 1 << ": " << std::setw(5) << numbers[i]
<< 't' << std::setw(5) << std::fixed << distance_to_mean << 'n';
}
std::cout.put('n');
}
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 输入std::数组时出现问题
- 类对象数组的问题会导致崩溃
- 传递二维数组时出现问题
- 从 C++ 中的函数返回数组地址问题
- 使用数组时出现问题
- 打印问题.我在数组中打印值时遇到一些问题
- C++:__aligned(__alignof__) 导致字符数组数据出现问题?
- 将字节数组转换为带有字节序问题的指针
- C++ 填充数组时遇到问题
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题
- 我正在尝试解决一个需要数组总和值但代码不起作用的问题,我想做这样的事情
- 编写 cin.get() 以接收字符数组时出现问题
- 在 C++ Consol 中的数组中执行用户命令时出现问题
- 存储另一个函数返回的布尔数组时遇到问题
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- 运行时C++数组初始化问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组