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

Считывание нескольких чисел - C++

Восстановить пароль Регистрация
 
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 13:36     Считывание нескольких чисел #1
Суть стоящей передо мной задачи такова - мне нужно ввести несколько чисел через пробел, например 1 12 49 2 (их количество заранее неизвестно), т.к эти числа не только от 0 до 9, то простой перевод введенной строки в массив с числами не помогает. Помогите, пожалуйста, понятия не имею, как это сделать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 13:40     Считывание нескольких чисел #2
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <vector>
#include <iterator>
 
int main(){
  std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
  for(int i = 0; i < vec.size(); ++i)
    std::cout << vec[i] << ' ';
  return 0;
}
Для завершения ввода -> Ctrl+Z
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 13:59  [ТС]     Считывание нескольких чисел #3
Спасибо, моя программа работает в цикле, как сделать, чтобы эти значения сбрасывались при следующей итерации цикла?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 14:03     Считывание нескольких чисел #4
vec.clear() - очистка вектора.
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 16:54  [ТС]     Считывание нескольких чисел #5
Всё равно не работает, в первый раз все правильно считывает, но в следующий просто пропускает считывание.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream.h>
#include<vector.h>
#include<iterator.h>
int len[10],m,paths[10][10];
 
 
void main()
{
  m=2;
  for (int j=0;j<m;j++)
  {
    printf ("\nVvedite marshrut ");
     std::vector<int> vec((std::istream_iterator<int>(std::cin)), std::istream_iterator<int>());
    for (int i=0; i<vec.size(); i++)
    {
      std::cout << vec[i] << ' ';
      paths[j][i]=vec[i];
    }
    len[j]=vec.size();
    vec.clear();
  }
}
Добавлено через 2 часа 14 минут
Насколько я понимаю, вектор таким образом объявлять нельзя

Добавлено через 54 секунды
именно в цикле
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 17:18     Считывание нескольких чисел #6
eternalfame, Ану попробуй так
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
#include<iostream>
#include<vector>
#include<iterator>
#include <cstdio>
int len[10],m,paths[10][10];
 
 
int main()
{
  m=2;
  std::vector<int> vec;
  int temp;
  for (int j=0;j<m;j++)
  {
    printf ("\nVvedite marshrut ");
     while(std::cin >> temp)
       vec.push_back(temp);
    std::cin.clear();
    for (int i=0; i<vec.size(); i++)
    {
      std::cout << vec[i] << ' ';
      paths[j][i]=vec[i];
    }
    len[j]=vec.size();
    vec.clear();
  }
}
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 17:41  [ТС]     Считывание нескольких чисел #7
Не помогает) Во второй раз так же пропускает считывание

Добавлено через 7 минут
Проблема кажется именно в том, что он не завершает cin
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 17:51     Считывание нескольких чисел #8
Цитата Сообщение от eternalfame Посмотреть сообщение
Во второй раз так же пропускает считывание
Незнаю, у меня нормально работает:
Миниатюры
Считывание нескольких чисел  
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 18:03  [ТС]     Считывание нескольких чисел #9
вот как у меня:
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
#include<iostream>
#include<conio>
#include<stdio>
#include<vector>
#include<iterator>
#include <cstdio>
int len[10],m,paths[10][10];
 
 
int main()
{
  m=2;
  std::vector<int> vec;
  int temp;
  for (int j=0;j<m;j++)
  {
    printf ("\nVvedite marshrut ");
     while(std::cin >> temp)
       vec.push_back(temp);
    std::cin.clear();
    for (int i=0; i<vec.size(); i++)
    {
      std::cout << vec[i] << ' ';
      paths[j][i]=vec[i];
    }
    len[j]=vec.size();
    vec.clear();
  }
  printf ("\nend");
  getch();
}
Миниатюры
Считывание нескольких чисел  
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 18:24     Считывание нескольких чисел #10
eternalfame, Когда ты ввел первую строку чисел, нажимаеш Enter ,а уже потом Ctrl + Z и снова Enter, пробуй так.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2011, 18:36     Считывание нескольких чисел
Еще ссылки по теме:

Считывание Значений С Нескольких Полей Ввода(ТекстКтрл) C++
Последовательное считывание нескольких символов из файла C++
C++ Считывание из одной строки. Как сделать из нескольких?

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

Или воспользуйтесь поиском по форуму:
eternalfame
0 / 0 / 0
Регистрация: 24.03.2011
Сообщений: 7
24.03.2011, 18:36  [ТС]     Считывание нескольких чисел #11
ооо, все, большое спасибо!)
Yandex
Объявления
24.03.2011, 18:36     Считывание нескольких чисел
Ответ Создать тему
Опции темы

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