Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
saharok2000
1 / 1 / 0
Регистрация: 01.07.2014
Сообщений: 49
#1

Как мне получить числа из строчки разделенные пробелом? - C++

03.07.2014, 20:18. Просмотров 1277. Ответов 7
Метки нет (Все метки)

Здравствуйте!!! Я решил порешать задачки на тимусе, а там половина задач начинается так: "в строке через пробел записано N чисел"
Как мне получить числа из строчки разделенные пробелом?
Мне кажется это связано с массивом.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2014, 20:18     Как мне получить числа из строчки разделенные пробелом?
Посмотрите здесь:

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) C++
Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки C++
Как получить последнию цифру числа! C++
C++ Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке
C++ Внести слова, разделенные пробелом, из строки в массив
Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке C++
C++ Как получить остаток от деления целго числа?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
03.07.2014, 20:24     Как мне получить числа из строчки разделенные пробелом? #2
http://acm.timus.ru/help.aspx?topic=cpp

В разделе ввод/вывод показан пример как считывать несколько значений.
Voivoid
 Аватар для Voivoid
593 / 269 / 12
Регистрация: 31.03.2013
Сообщений: 1,328
03.07.2014, 20:25     Как мне получить числа из строчки разделенные пробелом? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <algorithm>
#include <iostream>
#include <iterator>
 
int main() {
 
  static const int N = 42;
  int data[ N ] = {};
  
  std::copy_n( std::istream_iterator<int>( std::cin ), N, data );
 
  return 0;
}
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3838 / 1596 / 187
Регистрация: 20.02.2013
Сообщений: 4,586
Записей в блоге: 21
03.07.2014, 20:36     Как мне получить числа из строчки разделенные пробелом? #4
Строки в стиле C - это, по сути, и есть массивы типа char, с одним условием - последний элемент такого массива - символ \0. И получение отдельных символов из строки в стиле C - это, действительно, работа с массивом.

А вот строки в стиле C++ - это строки класса string. Тут уже чтобы получить отдельный символ строки, необходимо пользоваться методами класса string.

Добавлено через 9 минут
Впрочем, строки шаблонного класса string (строки в стиле С++) позволяют обращаться к отдельным символам строки и в привычной (для тех, кто привык работать со строками в стиле С) нотации массивов.
saharok2000
1 / 1 / 0
Регистрация: 01.07.2014
Сообщений: 49
03.07.2014, 21:34  [ТС]     Как мне получить числа из строчки разделенные пробелом? #5
Вот у меня такой код:
C++
1
2
3
4
5
6
7
8
int k;
    int f;
    int i = 0;
    cin >> k;
    f = (k * 2) - 1;
    char arr[f];
    while (cin.get(arr[f])){
}
я не понимаю вот чего:
1. Как мне достать числа из моего массива, если его размер произвольный?
2. Что мне писать в теле цикла while?
gru74ik
Модератор
Эксперт CЭксперт С++
 Аватар для gru74ik
3838 / 1596 / 187
Регистрация: 20.02.2013
Сообщений: 4,586
Записей в блоге: 21
04.07.2014, 07:04     Как мне получить числа из строчки разделенные пробелом? #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Что Вы пытаетесь сделать в этом куске кода?

В круглых скобках цикла while должно стоять условие (до каких пор программма должна выполнять цикл). В теле цикла должны быть какие-то операции (вывод значений на экран с помощью cout, например), переменная, обозначающая счётчик (количество проходов в цикле), а также инкрементация (или декрементация) счётчика.

Добавлено через 10 минут
Цикл while тут можно использовать для прохода по всему массиву.
То, что размер массива произвольный (до того, как пользователь ввёл значение переменной f) не должно Вас заботить, поскольку к тому моменту, как мы начнём шарится в массиве с помощью цикла while, программа уже будет знать размер массива (пользователь-то значение f уже введёт).

Добавлено через 38 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/// [url]http://www.cyberforum.ru/cpp-beginners/thread1222108.html[/url]
/*
Как получить числа разделенные пробелом из строки в стиле С?
*/
 
// Подключаем заголовочные файлы:
#include <iostream>     // для ввода-вывода
#include <windows.h>    // для отображения русского языка
#include <cctype>       // для использования функции isdigit()
 
using namespace std; // подключаем стандартное пространство имён
 
int main()  // функция main согласно стандарту C++ должна быть типа int
{
    SetConsoleCP(1251);       // для отображения в консоли русского языка
    SetConsoleOutputCP(1251); // для отображения в консоли русского языка
 
    int k;
    int sizeArr; // вместо f (так понятнее)
    cout << "Введите целое положительное число: ";
    cin >> k;
    sizeArr = (k * 2) - 1;
    char arr[sizeArr]; // создаём символьный массив размером sizeArr
 
    int i=0; // создаём счётчик для наших циклов
             // и устанавливаем его в ноль
 
    // пробегаем по всем элементам массива от самого
    // начала до самого конца, давая возможность
    // пользователю инициализировать массив значениями:
 
    while (i<sizeArr+1) // условие продолжения цикла
    {
        cout << "Введите значение " << i+1
             << "-го элемента массива: ";
        cin >> arr[i];
        cin.ignore();   // очищаем поток от лишних символов новой строки,
                        // попадающих в поток с нажатием пользователем
                        // клавиши Enter
        ++i;
 
    }
 
    i=0; // обнуляем счётчик
 
    // пробегаем по всем элементам массива от самого
    // начала до самого конца, проверяя нет ли среди
    // значений массива пробелов:
    while (i<sizeArr+1)
    {
        if (isdigit(arr[i]))   // проверяем число ли в данном элементе массива
            cout << "В элементе arr["
                 << i << "] хранится число "
                 << arr[i] <<endl;
        else
            cout << "В элементе arr["
                 << i << "] хранится символ пробела."
                 <<endl;
        ++i;
    }
 
 
    return 0;
}
// Примечание: при инициализации элементов массива
// пробелами, пробелы вводить через слэш.
rennnorb
8 / 8 / 2
Регистрация: 28.05.2014
Сообщений: 123
04.07.2014, 07:04     Как мне получить числа из строчки разделенные пробелом? #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>//библиотека для ifstream и ofstream
int main()
{
 ifstream in("in.txt");//создаем входной поток "in", подключаем к файлу in.txt. 
 ofstream out("out.txt");//создаем выходной поток "out", подключаем к файлу out.txt 
 
 while(!in.eof)//до теч пор пока не будет достигнут конец файла in.txt
 {
  int a, b;
  in>>a;//из файла in.txt через поток in берем число
  in>>b;//и еще число
  out<<"a + b = "<<a+b;//в файл out.txt через поток out кладем сумму a и b
 }
 return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2014, 11:46     Как мне получить числа из строчки разделенные пробелом?
Еще ссылки по теме:

Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки C++
C++ Как получить случайные отрицательные числа
C++ Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке
Как вставить нужные мне числа в двумерный массив C++
Как получить 3 цифру числа ? C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
04.07.2014, 11:46     Как мне получить числа из строчки разделенные пробелом? #8
Цитата Сообщение от saharok2000 Посмотреть сообщение
в строке через пробел записано N чисел
Считывайте их как числа нужного типа с помощью cin в цикле - спокойно считает, как раз из-за пробела.
Yandex
Объявления
04.07.2014, 11:46     Как мне получить числа из строчки разделенные пробелом?
Ответ Создать тему
Опции темы

Текущее время: 15:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru