Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 25.08.2019
Сообщений: 6
1

Ввод неизвестного количества int

25.08.2019, 18:15. Показов 6884. Ответов 8
Метки нет (Все метки)

Здравствуйте, при изучении c++ и соответственно решении задач, возникла проблема, что нужно вводить неизвестное количество int чисел, для этого использовал string getline и цикл, и вот хотел бы узнать есть ли способ легче, например какая нибудь команда, типа getline, но для int
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2019, 18:15
Ответы с готовыми решениями:

Ввод неизвестного количества строк
Доброго времени суток! Мне требуется ввести неизвестное количество строк. Пример: Пробовал...

Считывание неизвестного количества чисел
Доброго времени суток, извините что отвлеккаю.Помогите начинающему.Имеется задача...Вводится ряд...

Ввод числа неизвестного типа
Как можно сделать ввод с клавиатуры числа тип которого заранее неизвестен? Используя функции

Передача неизвестного количества аргументов в функцию, как реализовать?
Вот есть функция и в нее будут передаваться какие-то аргументы, причем заранее не известен их тип и...

8
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
25.08.2019, 18:16 2
Цитата Сообщение от Code Blocksqlll Посмотреть сообщение
типа getline, но для int
cin?

C++
1
2
int a;
cin >> a;
0
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,294
25.08.2019, 18:20 3
Цитата Сообщение от Code Blocksqlll Посмотреть сообщение
нужно вводить неизвестное количество int чисел
что является признаком окончания ввода ?
0
Модератор
Эксперт С++
10872 / 8991 / 5408
Регистрация: 18.12.2011
Сообщений: 24,040
25.08.2019, 18:23 4
C++
1
2
3
4
while(cin>>a)
{
   ....
}
признаком окончания будет строка с ctrl^z
0
0 / 0 / 0
Регистрация: 25.08.2019
Сообщений: 6
25.08.2019, 19:51  [ТС] 5
Начало новой строки
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 20:18 6
Лучший ответ Сообщение было отмечено Code Blocksqlll как решение

Решение

Я могу предложить такой вариант, если вы, конечно, им ещё не пользовались. Не самый безопасный, но все же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
 
inline int progEnd(int code = 0) { std::cout << "\nEND\n"; system("pause>nul"); return code; }
 
int main() {
    string str;
    stringstream ss;
    vector<int> data;
    int temp;
    
    getline(cin, str);
    ss << str;
    
    while(ss >> temp) data.push_back(temp);
 
    for(auto el : data) cout << el << ' ';
 
    return progEnd(0);
}
1
0 / 0 / 0
Регистрация: 25.08.2019
Сообщений: 6
25.08.2019, 20:39  [ТС] 7
Нужно вводить несколько int чисел количество которых я не знаю, а знаком окончания ввода является переход на новую строку
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 20:45 8
Code Blocksqlll, ну вот. Как раз с помощью getline данные, которые были в одной строке, записываются в переменную, затем эти данные передаются в поток данных, откуда считываются в вектор. Вводите любое количество интов.

Разве что этот код будет падать на такой строке:
Код
 0, 1, 2, 3, 4, 5
Не то чтобы ввод подразумевал такой формат, но с этим можно бороться так:
C++
1
2
3
4
    do {
        while(ss >> temp) data.push_back(temp);
        if(ss.fail()) ss.clear(), ss.ignore(255, ' ');
    } while(ss.rdbuf()->in_avail());
Так будут отсекаться все лишние символы до пробела и все данные, которые не могут быть переконвертированны в int.
1
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 20:53 9
Название: Screenshot_1.png
Просмотров: 132

Размер: 1.4 Кб
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2019, 20:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ввод текста неизвестного размера в массив
(Консольное приложение) Я хочу сделать так чтобы при вводе текста программа записывала каждый...

Ввод и вывод строки неизвестного размера
Как ввести и вывести строку неизвестного размера в c++? Нигде просто нормального объяснения не...

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int...

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;vector&gt; #include&lt;algorithm&gt; #include&lt;ctime&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.