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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 14:03   #1
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию простой вопрос

Код:
for(int ii = 0; ii<N; ii++)
	{
		do{
		cin>>a[ii];
		if ( cin.fail())
		{
			cout<<endl<<"Введённые данные не корректны! Введите значение ещё раз" <<endl;
		}
	    else 
		{
			flag3 = true;
		}
		cin.clear();
		_flushall();
		}while(!flag3);
	}
почему когда цикл do..while..крутится происходит увеличение ii?
ii должно ведь увеличиться только когда пройдёт до конца весь алгоритм в {} у фора

Последний раз редактировалось Stilet; 18.12.2011 в 14:50.
PinkPink вне форума Ответить с цитированием
Старый 18.12.2011, 14:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
почему когда цикл do..while..крутится
А у тебя flag3 изначально чем инициализирован?

Дописано:
Я бы писал так:
Код:
	for(int ii = 0; ii<N; ii++)
	{
		cin>>a[ii];
		while( cin.fail())		{
			cin.clear();
			_flushall();
			cout<<endl<<"Введённые данные не корректны! Введите значение ещё раз" <<endl<<ii;
			cin>>a[ii];
		}
	}
	return 0;
Ибо у тебя flag3 не сбрасывается в false после первого выставления в true
I'm learning to live...

Последний раз редактировалось Stilet; 18.12.2011 в 15:04.
Stilet вне форума Ответить с цитированием
Старый 18.12.2011, 14:54   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

При выходе из цикла Do-While сразу же происходит переход к следующей итерации цикла for, в котором увеличивается значение ii
Код:
for(int ii = 0; ii<N; ii++)
Вадим Мошев вне форума Ответить с цитированием
Старый 18.12.2011, 15:23   #4
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
При выходе из цикла Do-While сразу же происходит переход к следующей итерации цикла for, в котором увеличивается значение ii
Код:
for(int ii = 0; ii<N; ii++)
при выходе - понятно, но пока цикл не завершился не должно же увеличиваться ii, а у меня получается, что при следующей итерации цикла do.. while, а не for каким-то образом увеличивается ii.
тут ещё такой момент - поставила точки прерывания, когда программа останавливается на них почему-то не выводит значений переменных, массивов, отчего это может быть? невозможно ведь отслеживать ошибки =(

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

Stilet, Вам спасибо, ваш вариант мне очень нравится

Последний раз редактировалось Stilet; 18.12.2011 в 16:53.
PinkPink вне форума Ответить с цитированием
Старый 18.12.2011, 16:52   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Никто не угадал в чём была причина
В чем же интересно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простой вопрос Анастасия123456789 Помощь студентам 2 10.03.2009 09:23
Простой вопрос...??? Vremya-Dengy Общие вопросы Delphi 13 09.02.2009 08:30
Простой вопрос Д'якон Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2008 16:51
Простой вопрос Prowler БД в Delphi 3 26.01.2007 16:46