2016-12-12 3 views
-3

Моя программа позволяет пользователю вводить 50 номеров и дает общее и среднее значение. Мой размер массива - это постоянный набор в 50. Я хочу, чтобы пользователь мог ввести не более 50 номеров, но иметь возможность вводить меньше. Моя идея состояла бы в том, чтобы ввести «q», чтобы выйти, чтобы остановить запрос пользователя на число. Как мне это сделать?C++ Как разрешить пользователю определять размер массива?

for (int i = 0; i < ARRAY_SIZE; i++) { 
 
    cout << "Enter Number: "; 
 
    cin >> array[i]; 
 
}

+4

Даже если массив ограничен до 50 вы можете принять меньше - Ваша идея ввести д хорошо, но я не понимаю, какую помощь вам нужно, когда вы говорите «как я это сделаю»? Просто примите ввод как строку, проверьте его на q, а затем преобразуйте его в число и сохраните. –

+1

Мне нужна помощь, добавив ввод 'q' в мой существующий цикл for – user38099

+1

Что происходит с вашим кодом сейчас, когда вы вводите то, что не является числом? –

ответ

0

Вы должны ввести строку, а затем проверить, если строка д, прежде чем превратить его в номер:

#include <iostream> 
#include <algorithm> 
#include <iterator> 

int main() 
{ 
    const int ARRAY_SIZE=50; 
    int array[ARRAY_SIZE]; 
    std::string temp; 
    int items; 

    for(items=0; items<ARRAY_SIZE; items++){ 
     std::cout << "Enter Number: "; 
     std::cin >> temp; 
     if(temp=="q" || temp=="Q") break; 
     array[items] = atoi(temp.c_str()); 
    } 

    std::cout << items << " items entered:\n"; 
    std::copy(array, array+items, std::ostream_iterator<int>(std::cout,"\n")); 

    return 0; 
} 
-2
int ARRAY_SIZE = 0; 
for(int i=0; i < 50; i++){ 
    cout << "Enter Number: "; 
    cin >> array[i]; 
    if(array1[i] == 'q') 
     break; 
    ARRAY_SIZE++; 
} 
int* array2 = new int[ARRAY_SIZE]; 
for(int i=0; i < ARRAY_SIZE; i++ 
    array2[i] = array[i]; 

... затем удалить array1. Это должно работать, таким образом, пользователь определяет размер массива2, максимум 50, но переменный, размер.

Надеюсь, это поможет, это мой первый ответ, так что если это плохо, я сожалею.

+3

Если тип 'array1' является' int', то ввод буквы «q» не будет работать. – Galik

Смежные вопросы