4 / 2 / 1
Регистрация: 27.01.2014
Сообщений: 114
1

Ввод переменных через пробел в одну строку

22.11.2014, 20:12. Показов 55168. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
на олимпиаде по информатике сегодня лажанулся капец как... хотел написать все на c++, пришлось писать на паскальке. там практически во всех задачах требуется вводить числа через пробел в строку, типа так:
C++
1
cin >> mas[1] >> mas[2] >> mas[3];
а если заранее не известно, скольким элементам массива нужно присваивать и их МНОГО?.. я лично растерялся. вот если не в строку, а просто через цикл одну за другой - нет проблем - просто ввёл - enter - ввёл - enter. но так нельзя...

в паскальке хотя бы есть
Pascal
1
2
3
read();
//и
readln();
а в c++ как?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2014, 20:12
Ответы с готовыми решениями:

Ввод данных через scanf без перехода на новую строку, используя пробел
Нужно ввести двумерный массив так, чтобы каждый символ вводился на этой же строке нажатием клавиши...

Ввод через пробел. Как остановить ввод. while(cin >> input)
Здравствуйте. Начну с условия задания. Ввести к-во элементов массива. Заполнить массив....

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

Ввод переменных в одну строчку
Всем привет, я запрашиваю переменную с помощью функции scanf, но после этого нужно нажимать клавишу...

11
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
22.11.2014, 20:28 2
C++
1
2
    std::string a;
    std::getline(std::cin, a);
0
4 / 2 / 1
Регистрация: 27.01.2014
Сообщений: 114
22.11.2014, 20:50  [ТС] 3
нет-нет, не то... целые, допустим, числа присваиваем элементам массива...
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
22.11.2014, 20:52 4
Цитата Сообщение от b_d Посмотреть сообщение
нет-нет, не то... целые, допустим, числа присваиваем элементам массива...
По строке можно циклом пройтись и всё записать в массив, или какие то ограничения по времени или памяти?
0
4 / 2 / 1
Регистрация: 27.01.2014
Сообщений: 114
22.11.2014, 20:59  [ТС] 5
о, что то я об этом не подумал, а каким образом из строки вытаскивать отдельные символы? и их потом конвертировать в int, например?
0
24 / 24 / 16
Регистрация: 01.11.2013
Сообщений: 196
22.11.2014, 21:04 6
Разбить строку чисел в вектор
1
120 / 142 / 46
Регистрация: 31.10.2014
Сообщений: 721
Записей в блоге: 1
22.11.2014, 21:05 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int _tmain(int argc, _TCHAR* argv[])
{
    int massiv[256];
    std::string str;
    std::getline(std::cin, str);
    std::string::size_type sz;
    int index = 0;
    while(str.length())
    {
        
        int i_dec = std::stoi(str, &sz);
        massiv[index] = i_dec;
        str = str.substr(sz);
        index++;
    }
 
    _getch();
    return 0;
}
и при запуске вводим числа через пробел до усрачки
3
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 3
23.12.2022, 18:45 8
У меня получилось так положить неизвестное число значений в вектор.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
    vector <int> b;
    int a;
    int i = 0;
    while (cin.peek() != '\n') {
        cin >> a;
        b.push_back(a);
        ++i;
    }
    b.resize(i);
    for (int r = 0; r < b.size(); ++r) {
        cout << b[r] << endl;
    }
}
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
23.12.2022, 18:52 9
ради этого ответа зарегался? Поздравляю.

Цитата Сообщение от Derzhi_Zhabu Посмотреть сообщение
b.resize(i);
смысл этого был бы, если б размер был известен и мы бы писали
C++
1
2
3
4
5
6
7
8
9
    vector <int> b;
    int i = 10;
    b.resize(i);
    for (int r = 0; r < b.size(); ++r) {
        cin >> b[r];
    }
    for (int r = 0; r < b.size(); ++r) {
        cout << b[r] << endl;
    }
а если размер определяется по количеству push_backов, то и resize не нужен
0
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 3
23.12.2022, 19:17 10
Понял)
Я просто только сел изучать плюсы и нормального ответа на поставленный вопрос я найти не смог. А в олимпиадах в основном именно такие приколы. Зарегался, чтоб другие не мучались с поиском)
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
23.12.2022, 19:26 11
Derzhi_Zhabu, в олимпиадах обычно все размеры массивов дают, типичное условие это "на вход подаётся число N а следом за ним N чисел"
0
0 / 0 / 0
Регистрация: 23.12.2022
Сообщений: 3
24.12.2022, 08:17 12
Увы, но нет, всегда есть задачи, где вводится произвольное число чисел через пробел, а одна задача из пяти, уже много)
0
24.12.2022, 08:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2022, 08:17
Помогаю со студенческими работами здесь

Ввод чисел через пробел
Доброго времени суток! Подскажите как правильно сделать. Есть односвязный список. Нужно вводить...

Ввод массива через пробел
Есть массив int С, и есть строка string S, у строки S есть длинна S.size(), следовательно кол-во...

Ввод двух строк через пробел
Здравствуйте, подскажите пожалуйста как осуществить ввод двух строк через пробел. Например: 123 321.

Ввод чисел пользователем через пробел
Есть задача, где пользователь вводит количество годов, а на следующей строке перечисляет эти года...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru