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

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

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

Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки 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
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
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
Модератор
 Аватар для gru74ik
3120 / 1346 / 167
Регистрация: 20.02.2013
Сообщений: 3,846
Записей в блоге: 17
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
Модератор
 Аватар для gru74ik
3120 / 1346 / 167
Регистрация: 20.02.2013
Сообщений: 3,846
Записей в блоге: 17
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
Сообщений: 122
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     Как мне получить числа из строчки разделенные пробелом?
Еще ссылки по теме:

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

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

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

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