Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2011, 15:58   #1
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
Вопрос SeekEOLn на C++

В общем, простая задача, нужно с клавиатуры ввести числа в массив, причём количество чисел заранее не известно.

На Паскале можно записать что-то вроде этого:
Код:
while not SeekEOLn do begin
    Inc(N);
    Read(A[N]);
end;
Как подобное записать на c++?
Kingdom_Reborn вне форума Ответить с цитированием
Старый 22.08.2011, 00:21   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

1)
Код:
	int arr[100];
	int cur=0;
	int temp;

	
	while (std::cin >> temp)
		arr[cur++]=temp;

	for (int i=0; i<cur; i++) // проверка
		std::cout << arr[i] << ' ';
тут чтение будет происходить пока на терминал не поступит сигнал eof, так, что надо будет отправить его туда по окончанию ввода (ctrl+z на вин, на лине не помню как)

2)
читать в строку и оттуда вытаскивать с atoi().
+ не надо посылать eof.
- сишный вариант
- медленнее 1-го варианта
- код длиннее

Код:
	int arr[100];
	int cur=0;

	char line[255];

	std::cin.getline(line,255);

	char * p = strtok(line," \n");

	while (p) {
		arr[cur++] = atoi(p);

		p = strtok(0," \n");
	}
	for (int i=0; i<cur; i++)
		std::cout << arr[i] << ' ';
3)
Код:
	int arr[100];
	int cur=0;
	int temp;

	std::string str;
	std::getline(std::cin,str);
	std::stringstream ss(str);

	while (ss >> temp) {
		arr[cur++]=temp;
	}

	for (int i=0; i<cur; i++)
		std::cout << arr[i] << ' ';
+ более-менее С++ стиль
- не уверен но вроде бы ещё медленнее
- также длинный код

я бы использовал 1ый вариант .
onewho вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц