Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Внести слова, разделенные пробелом, из строки в массив - C++
Доброго времени суток. Нужно считать текст из файла и внести в массив слова определенной строки, разделенные пробелом. Набросал такой код: ...

Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке - C++
Дана строка, состоящая из русских слов, набранных заглавными бук-вами и разделенных пробелами (одним или несколькими). Вывести строку,...

Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке - C++
Дана строка, набранная из слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими). Вывести строку, содержащую...

Вывести строку, содержащую слова, разделенные одним пробелом и расположенные в алфавитном порядке - C++
Дана строка, состоящая из русских слов, набранных заглавными буквами и разделенных пробелами(одним или несколькими). Вывести строку,...

Вывести строку, содержащую эти же слова, разделенные одним пробелом и расположенные в обратном порядке - C++
Здравствуйте. можете прокомментировать эту программу? #include "stdafx.h" #include <string> #include <iostream> using...

Из строки вводимых чисел разделённых пробелом, получить числа последняя цифра которого делится на 2 - C++
Суть заключается в том,что нужно ввести строку чисел разделённых пробелом например:1111 3333 1111 3323 А потом вывести те,последние числа...

7
BatonPro
30 / 30 / 24
Регистрация: 21.06.2014
Сообщений: 81
03.07.2014, 20:24 #2
http://acm.timus.ru/help.aspx?topic=cpp

В разделе ввод/вывод показан пример как считывать несколько значений.
1
Voivoid
675 / 278 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
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;
}
1
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,991
Записей в блоге: 22
03.07.2014, 20:36 #4
Строки в стиле C - это, по сути, и есть массивы типа char, с одним условием - последний элемент такого массива - символ \0. И получение отдельных символов из строки в стиле C - это, действительно, работа с массивом.

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

Добавлено через 9 минут
Впрочем, строки шаблонного класса string (строки в стиле С++) позволяют обращаться к отдельным символам строки и в привычной (для тех, кто привык работать со строками в стиле С) нотации массивов.
1
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?
0
gru74ik
Модератор
Эксперт CЭксперт С++
4196 / 1844 / 198
Регистрация: 20.02.2013
Сообщений: 4,991
Записей в блоге: 22
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;
}
// Примечание: при инициализации элементов массива
// пробелами, пробелы вводить через слэш.
1
rennnorb
9 / 9 / 2
Регистрация: 28.05.2014
Сообщений: 135
Завершенные тесты: 1
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;
}
0
IrineK
Заблокирован
04.07.2014, 11:46 #8
Цитата Сообщение от saharok2000 Посмотреть сообщение
в строке через пробел записано N чисел
Считывайте их как числа нужного типа с помощью cin в цикле - спокойно считает, как раз из-за пробела.
0
04.07.2014, 11:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2014, 11:46
Привет! Вот еще темы с ответами:

Как вставить нужные мне числа в двумерный массив - C++
Есть матрица 3х3 void ShowMatrix(double** matrix) { for (int i = 0; i &lt; N; i++) { for (int j = 0; j &lt; M; j++) cout &lt;&lt;...

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) - C++
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за...

Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки - C++
помогите пожалуйста!!! Дана строка S. Необходимо получить подстроку, расположенную между первым и последним пробелом исходной строки....

Как прочитать из файла числа, разделенные пробелом для массива? - Pascal
Как прочитать из файла прочитать числа (неограниченное количество), разделенные пробелом для массива?


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

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

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