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

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

Войти
Регистрация
Восстановить пароль
 
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
#1

Считывание чисел с консоли через пробел - C++

29.04.2014, 10:34. Просмотров 1257. Ответов 13
Метки нет (Все метки)

Все же С++ - странный язык... Гуглил, но не нашел нормального способа считать определенное количество чисел, введенных через пробел.
Писал так:
C++
1
2
3
4
5
6
int* myarr = new int[SIZE]; //SIZE задефайнен
    int index = -1;
    for (int i = 0; i < SIZE; i++) {
        cin >> myarr[i];
        if (myarr[i] < 0) index == i;
    }
Но не хочет. Сишный scanf с форматированием использовать не хочу. Есть способ считать нормально, по-плюсовски?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2014, 10:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание чисел с консоли через пробел (C++):

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

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

Ввод чисел пользователем через пробел - C++
Есть задача, где пользователь вводит количество годов, а на следующей строке перечисляет эти года через пробел. ( Например, 4 года : 2012...

считывание с консоли ( не с клавы, а именно с консоли) - C++
нужно написать функцию которая возвращает string в котором написано 500 символов которые были выведены в консоли от начала. среда :...

Считывание через ifstream строки состоящей из чисел и символов из файла - C++
Хотелось узнать как можно это осуществить, вся суть в том что у меня есть файл в который я записываю данные в виде F(0) T(178...

Ввод чисел через пробел до определеного числа,убрать оставшиеся числа - C++
Нужно ввести числа через проблем, набор заканчиваеться числом меньше или равно нулю. Пример: 1 2 3 -1 5 6 7 (занести нужно будет...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:42 #2
referent, т.е если SIZE 5 и Вы введете через пробел 5 цифр то они не считаются?
0
Ilot
Модератор
Эксперт С++
1811 / 1168 / 229
Регистрация: 16.05.2013
Сообщений: 3,082
Записей в блоге: 5
Завершенные тесты: 1
29.04.2014, 10:45 #3
Используйте vector
1
BlackSpace
137 / 130 / 52
Регистрация: 15.03.2014
Сообщений: 277
29.04.2014, 10:45 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
 
using namespace std;
 
#define SIZE 5
 
int main() {
 
    int* myarr = new int[ SIZE ];
    int index = -1;
 
    for ( int i = 0; i < SIZE; i++ ) {
        cin >> myarr[ i ];
        if ( myarr[ i ] < 0 )
            index = i; // == != =
    }
 
    for ( int i = 0; i < SIZE; i++ )
        cout << myarr[ i ] << " ";
 
    cout << endl;
 
    cout << index << endl;
 
    delete[] myarr;
 
    return 0;
}
Вывод
-1 -2 3 4 -5
-1 -2 3 4 -5
4

Но vector - лучше в использовании.
1
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 10:47  [ТС] #5
Цитата Сообщение от aLarman Посмотреть сообщение
т.е если SIZE 5 и Вы введете через пробел 5 цифр то они не считаются?
Ну смотрите, мой код:
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
#define SIZE 10
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
 
using namespace std;
 
int main()
{
    int* myarr = new int[SIZE];
    int index = -1;
    for (int i = 0; i < SIZE; i++) {
        cin >> myarr[i];
        if (myarr[i] < 0) index == i;
    }
    if (index == -1) {
        cout << "This array hasn't any negative element" << endl;
        system("pause");
        return 0;
    }
    sort(myarr, myarr + index);
    copy(myarr, myarr + SIZE, ostream_iterator<int>(cout, " "));
    return 0;
}
Ввел в консоли :
1 3 2 6 4 5 -1 5 6 4
Вывело: "This array hasn't any negative element". Из чего я заключаю, что массив не считался корректно. Или проблема в другом месте? З. Ы: блин, точно, написал вместо = ==
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:49 #6
Цитата Сообщение от referent Посмотреть сообщение
Вывело:
но так не бывает см.пример BlackSpace,
0
BlackSpace
137 / 130 / 52
Регистрация: 15.03.2014
Сообщений: 277
29.04.2014, 10:49 #7
referent,
index = i;
index == i; - не так.
Сообщения подсказки компилятор не выводит у Вас?
1
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 10:53  [ТС] #8
Цитата Сообщение от BlackSpace Посмотреть сообщение
Сообщения подсказки компилятор не выводит у Вас?
Только что проверил - вывело и сразу куда-то исчезло. Visual Studio 2013. Но спасибо, уже заметил.
А как это сделать с помощью вектора?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:57 #9
Цитата Сообщение от referent Посмотреть сообщение
Только что проверил - вывело и сразу куда-то исчезло
C++
1
2
3
system("pause")  ;
  return 0;
}
0
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 10:59  [ТС] #10
aLarman, не, нашел уже. В Output надо переключиться с Sebug на Build (как-то нелогично, варнинги, по идее, относятся к отладочной информации). Написало:
e:\my documents\dropbox\studying\учёба\3 курс\системное программирование\контрольная\task3\task3\task3.cpp(15): warning C4553: '==' : operator has no effect; did you intend '='?
Мда, после Intellij Idea непривычно.
Но все же, как считывание делается с вектором?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 11:00 #11
C++
1
2
3
4
5
std::vector MyVec(SIZE,0);
for (int i = 0; i < SIZE; i++) {
        cin >> MyVec[i];
        if (MyVec[i] < 0) index == i;
    }
1
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 11:02  [ТС] #12
aLarman, стоп, вектор - это что-то типа ArrayList в Java?
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 11:04 #13
ну почти, там только методы другие для вставки и удаления

Добавлено через 1 минуту
Если интересно вот
0
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 11:08  [ТС] #14
aLarman, короче, сделал.
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
#define SIZE 10
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <vector>
 
using namespace std;
 
int main()
{
    int index = -1;
    vector<int> array_vector(SIZE, 0);
    for (int i = 0; i < SIZE; i++) {
        cin >> array_vector[i];
        if (array_vector[i] < 0) index = i;
    }
    if (index == -1) {
        cout << "This array hasn't any negative element" << endl;
        system("pause");
        return 0;
    }
    sort(array_vector.begin(), array_vector.begin() + index);
    copy(array_vector.begin(), array_vector.begin() + SIZE, ostream_iterator<int>(cout, " "));
    system("pause");
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2014, 11:08
Привет! Вот еще темы с ответами:

Считывание с консоли С++ - C++
1.Мне нужно считать текст введенный пользователем с консоли и записать в переменную, он может быть довольно большим, и, естественно,...

Считывание файлов и консоли с++ - C++
Почему программа не считывает а с консоли? #include &lt;iostream&gt; #include &lt;cstdio&gt; using namespace std; int main() { ...

Из С в C++, считывание с консоли в цикле - C++
Доброго времени суток. Вот такой вот вопрос: В С очень удобно было делать вот такую штуку: for( ; scanf(&quot;%d&quot;, &amp;a) ;){ .....; } ...

Считывание данных из консоли - C++
Здравствуйте! Вот задача: есть программа, вызывающая посредством system() другую программу. Та, в свою очередь, печатает в консоль...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.04.2014, 11:08
Ответ Создать тему
Опции темы

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