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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 22:53   #1
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию Выход из цикла

Здравствуйте. Помогите, пожалуйста, найти ошибку. Не пойму как сделать выход из цикла. Нужно выйти из цикла, когда RGB будет равно 1.0, 1.0, 1.0.
Код:
#include<iostream.h>
void main()
{
	float r=0.0,g=0.0,b=0.0,d=0.1;
	int flag=1;
	do
	{
		b+=d;
		if (b>1.0)
		{
			b=0.0;
			g+=d;
			if (g>1.0)
			{
				g=0.0;
				r+=d;
			}
		}
		if ((r>=1.0)&&(g>=1.0)&&(b>=1.0))
			flag=0;
	}
	while (flag==1);
}
Сергей089 вне форума Ответить с цитированием
Старый 17.03.2010, 00:09   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

у вас цикл будет бесконечный, т.к условие
if ((r>=1.0)&&(g>=1.0)&&(b>=1.0)) не выполнится никогда


а вобще чтобы выйти из цикла достаточно написать break
NiCola999 вне форума Ответить с цитированием
Старый 17.03.2010, 00:13   #3
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

Оператор && возвращает true тогда и только тогда, когда оба его операнда имеют значение true.
NiCola999, не успел я...
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 17.03.2010, 08:27   #4
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

А так почему-то работает
Код:
#include<iostream.h>
void main()
{
	int r=0,g=0,b=0,d=1;
	float R, G, B;
	int flag=1;
	do
	{
		b+=d;
		if (b>10)
		{
			b=0;
			g+=d;
			if (g>10)
			{
				g=0;
				r+=d;
			}
		}
		if ((r>=10)&&(g>=10)&&(b>=10))
			flag=0;
	}
	while (flag==1);
	R=1.*r/10;
	G=1.*g/10;
	B=1.*b/10;
	cout<<R<<" "<<G<<" "<<B<<endl;
}
Может из-за типа float?
Сергей089 вне форума Ответить с цитированием
Старый 17.03.2010, 09:47   #5
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

В первом варианте цикл составлен неправильно

Ошибка здесь:
Цитата:
Сообщение от Сергей089 Посмотреть сообщение
Здравствуйте. Помогите, пожалуйста, найти ошибку. Не пойму как сделать выход из цикла. Нужно выйти из цикла, когда RGB будет равно 1.0, 1.0, 1.0.
Код:
#include<iostream.h>
void main()
{
	float r=0.0,g=0.0,b=0.0,d=0.1;
	int flag=1;
	do
	{
		b+=d;
		if (b>1.0)
		{
			b=0.0;
			g+=d;
			if (g>1.0)
			{
				g=0.0;
				r+=d;
			}
		}
		if ((r>=1.0)&&(g>=1.0)&&(b>=1.0))
			flag=0;
	}
	while (flag==1);
}
Если элемент больше 1, то он сразу зануляется; отсюда и бесконечный цикл.

Последний раз редактировалось Stilet; 17.03.2010 в 16:23.
Serebro вне форума Ответить с цитированием
Старый 17.03.2010, 15:52   #6
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
Сообщение от Serebro Посмотреть сообщение
Ошибка здесь:

Если элемент больше 1, то он сразу зануляется; отсюда и бесконечный цикл.
Мне нужно, чтобы переменные r, g, b принимали значения от 0.0 до 1.0, поэтому, поэтому обнуляю одну переменную и повышаю другую.

Последний раз редактировалось Сергей089; 17.03.2010 в 15:54.
Сергей089 вне форума Ответить с цитированием
Старый 17.03.2010, 16:44   #7
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Сергей089 Посмотреть сообщение
Мне нужно, чтобы переменные r, g, b принимали значения от 0.0 до 1.0, поэтому, поэтому обнуляю одну переменную и повышаю другую.
Не лучше ли сделать три вложенных цикла?
Serebro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход из бесконечного цикла TilerDerton Общие вопросы Delphi 9 10.09.2010 08:48
выход из цикла varelik Общие вопросы Delphi 13 24.12.2009 20:42
Выход из цикла нажатием ESC Banderas123 Помощь студентам 2 05.12.2009 22:44
Выход из цикла RIO Помощь студентам 1 21.04.2008 22:55