如何结束用户输入数组

问题描述 投票:0回答:1

这是一个实验室作业,我已经让它工作了,但有一件事困扰着我。这个作业涉及到创建一个一维数组,然后对其进行操作。我应该允许最多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;
}
c++ arrays user-input
1个回答
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.


0
投票

我已经编辑了一点主要功能.这里用户被问到他想输入多少元素.并做动态的内存分配,以节省空间

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.