这是一个实验室作业,我已经让它工作了,但有一件事困扰着我。这个作业涉及到创建一个一维数组,然后对其进行操作。我应该允许最多100个输入,但用户不需要使用所有100个。现在,我使用 while 语句来中断或允许输入另一个输入。要中断语句,你必须输入一个负数(这是我不喜欢的,我想改变)。当用户输入完数字后,还有什么其他选项可以结束用户的输入?是否可以在什么都不输入的情况下按下回车键就结束循环?
在过去的3天里,我一直在stackoverflow上搜索,找到了一些令人信服的东西,但始终无法让它工作。
注意,我知道void函数在这里是多余的,但这不是重点(除非它真的影响我实现我想要的东西)。
另外,先谢谢你。
这里是我的代码,到目前为止(我的while语句在main中)......好心的我是个编码新手。
#include <iostream>
using namespace std;
void reverseElements(int array[], int size)
{
int tmp;
int j;
int i = size;
j = i - 1;
i = 0;
while (i < j)
{
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}
cout << "I will now reverse the elements of the array." << endl;
cout << endl;
for (i = 0; i < size; i++)
{
cout << array[i] << " " << endl;
}
}
int main()
{
const int NUM_ELEMENTS = 100;
int iArr[NUM_ELEMENTS];
int i;
int myInput;
cout << "Enter your numbers, then enter a negative number to finish" << endl;
cout << endl;
for (i = 0; i < NUM_ELEMENTS; i++) //loop to obtain input
{
cin >> myInput;
if (myInput < 0) //checks for negative number to end loop
{
break;
}
else //continues to allow input
{
iArr[i] = myInput;
}
}
cout << endl;
reverseElements(iArr, i);
return 0;
}
可能最简单的解决方法是:在实际写数字之前,让你的用户选择要写多少数字。
int readNumbersCount()
{
int const numbersMin = 1;
int const numbersMax = 100;
int numbersCount = -1;
while (numbersCount < numbersMin || numbersCount > numbersMax)
{
std::cout <<
"How many numbers are you going to enter? Choose from " <<
numbersMin << " to " << numbersMax << ":\n";
std::cin >> numbersCount;
}
return numbersCount;
}
int main()
{
int const numbersCount = readNumbersCount();
for (int i = 0; i < numbersCount; ++i)
{
// read the numbers etc.
}
return 0;
}
我写了 readNumbersCount()
作为一个单独的函数来提取 numbersMin
和其他 "一次性 "标识符 main()
并使 main()
's numbersCount
const
.
我已经编辑了一点主要功能.这里用户被问到他想输入多少元素.并做动态的内存分配,以节省空间
int main()
{ int n=101;
while(n>100){
cout<<"How many numbers do you want to enter";
cin>>n;
}
int *ptr=new(nothrow)int[n];
for (int i=0;i<n;i++){
cout << "Enter your number" << endl;
cin>>ptr[i];
}
cout << endl;
reverseElements(ptr, n);
return 0;
}