该代码当前接受数据条目数量的输入和以单个空格分隔的数量输入。我的目的是获取数据并将其转换为数组,但是每当我尝试使用格式时
int array[ndata];
由于变量ndata不是恒定的,因此版本包含错误。如何更改数组大小的输入以实现此目的?
码:
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int MAXDATA = 100;
bool ok = 1;
double sum = 0, x, data[MAXDATA];
double min = 1e32, max = -1e32;
int ndata = 0;
int count = 0;
while (ok)
{
cout << "Enter number of data to input then press <Enter>: ";
cin >> ndata;
if (ndata > 0 && ndata < MAXDATA) ok = 0;
cout << "Enter numbers separated by a single space, then press <Enter>: ";
count = 0;
while (count < ndata)
{
cin >> x;
data[count] = x;
sum = sum + x;
count++;
cout << "sum is " << sum << endl;
}
}
}
最佳答案
您可以通过2种方式来处理此问题。
声明更接近首次使用的变量
第一种方法是在您打算使用它们的位置附近声明变量。这是很有用的事情,因为当声明和使用彼此接近时,它使读取代码变得更加容易。它看起来像这样:
#include <iostream>
#include <string>
using namespace std;
int main(){
const int MAXDATA = 100;
bool ok = 1;
double sum = 0, x;
double min = 1e32, max = -1e32;
int ndata = 0;
int count = 0;
while (ok) {
cout << "Enter number of data to input then press <Enter>: ";
cin >> ndata;
if (ndata > 0 && ndata < MAXDATA) ok = 0;
cout << "Enter numbers separated by a single space, then press <Enter>: ";
count = 0;
double data[ndata];
while (count < ndata) {
cin >> x;
data[count] = x;
sum = sum + x;
count++;
cout << "sum is " << sum << endl;
}
}
}
请注意,您需要添加一些额外的检查来确保ndata
不大于MAXDATA
。之所以有效,是因为在初始化
data
后声明了ndata
。请注意,如果不检查以确保ndata
小于MAXDATA
,则会冒堆栈溢出的风险。动态分配
更好的方法是在堆上分配
data
数组。这使您可以将其设置为所需的最大大小(取决于操作系统和硬件的限制)。但是,确实需要格外小心,以确保在使用完数据后将其释放。它看起来像这样:#include <iostream>
#include <string>
using namespace std;
int main(){
const int MAXDATA = 100;
bool ok = 1;
double sum = 0, x;//, data[MAXDATA];
double min = 1e32, max = -1e32;
int ndata = 0;
int count = 0;
while (ok) {
cout << "Enter number of data to input then press <Enter>: ";
cin >> ndata;
if (ndata > 0 && ndata < MAXDATA) ok = 0;
cout << "Enter numbers separated by a single space, then press <Enter>: ";
count = 0;
double *data = new double [ ndata ];
while (count < ndata) {
cin >> x;
data[count] = x;
sum = sum + x;
count++;
cout << "sum is " << sum << endl;
}
delete [] data;
}
}
关于c++ - 询问输入数据的数量并将输入数据存储在数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53795159/