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

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

Восстановить пароль Регистрация
 
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 10:34     Считывание чисел с консоли через пробел #1
Все же С++ - странный язык... Гуглил, но не нашел нормального способа считать определенное количество чисел, введенных через пробел.
Писал так:
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 с форматированием использовать не хочу. Есть способ считать нормально, по-плюсовски?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:42     Считывание чисел с консоли через пробел #2
referent, т.е если SIZE 5 и Вы введете через пробел 5 цифр то они не считаются?
Ilot
Модератор
Эксперт С++
1765 / 1140 / 221
Регистрация: 16.05.2013
Сообщений: 3,017
Записей в блоге: 5
Завершенные тесты: 1
29.04.2014, 10:45     Считывание чисел с консоли через пробел #3
Используйте vector
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
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 - лучше в использовании.
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". Из чего я заключаю, что массив не считался корректно. Или проблема в другом месте? З. Ы: блин, точно, написал вместо = ==
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:49     Считывание чисел с консоли через пробел #6
Цитата Сообщение от referent Посмотреть сообщение
Вывело:
но так не бывает см.пример BlackSpace,
BlackSpace
135 / 128 / 50
Регистрация: 15.03.2014
Сообщений: 275
29.04.2014, 10:49     Считывание чисел с консоли через пробел #7
referent,
index = i;
index == i; - не так.
Сообщения подсказки компилятор не выводит у Вас?
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 10:53  [ТС]     Считывание чисел с консоли через пробел #8
Цитата Сообщение от BlackSpace Посмотреть сообщение
Сообщения подсказки компилятор не выводит у Вас?
Только что проверил - вывело и сразу куда-то исчезло. Visual Studio 2013. Но спасибо, уже заметил.
А как это сделать с помощью вектора?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 10:57     Считывание чисел с консоли через пробел #9
Цитата Сообщение от referent Посмотреть сообщение
Только что проверил - вывело и сразу куда-то исчезло
C++
1
2
3
system("pause")  ;
  return 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 непривычно.
Но все же, как считывание делается с вектором?
aLarman
636 / 557 / 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;
    }
referent
1 / 1 / 0
Регистрация: 24.04.2014
Сообщений: 36
29.04.2014, 11:02  [ТС]     Считывание чисел с консоли через пробел #12
aLarman, стоп, вектор - это что-то типа ArrayList в Java?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.04.2014, 11:04     Считывание чисел с консоли через пробел #13
ну почти, там только методы другие для вставки и удаления

Добавлено через 1 минуту
Если интересно вот
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2014, 11:08     Считывание чисел с консоли через пробел
Еще ссылки по теме:

Считывание файлов и консоли с++ C++
C++ Считывание данных из консоли
C++ Вводи чисел с клавиатуры через пробел

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

Или воспользуйтесь поиском по форуму:
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;
}
Yandex
Объявления
29.04.2014, 11:08     Считывание чисел с консоли через пробел
Ответ Создать тему
Опции темы

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