Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Бесконечный цикл


Автор: GITARIST84 3.4.2008, 12:29
Необходимо генерировать 2 числа(в заданном диапазоне) в бесконечном цикле,котрые затем должны пройти проверку(функция stop() ),при верном совпадении обоих чисел цикл должен остановиться.Ниже приведен код программы.Подскажите, где ошибка!
Код

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
int x;
int y,g,h;
bool TForm1::stop()
{
if (x>92);
{
if (y<14);
{
return 0;
}
}
return 1;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
randomize();
while(1)
{
x=random(7.0)+92.0;
y=random(7.0)+10;
if(stop())break;
}
}




Автор: mrbrooks 3.4.2008, 12:36
Во первых вещественные и целые не путай. Смотри сигнатуру вызываемых функций.

Автор: korian 3.4.2008, 12:37
Код

bool TForm1::stop()
{
    if (x>92 && y<14)
        return false;
    return true;
}

так наверно?
и [censored 6]... кто вас учит ставить ";" сразу после условия IF? уже далеко не первый раз вижу такую запись...

Код

//вот это:
if (y<14);
{
    return 0;
}

//делает тоже самое, что это:
if (y<14)
{
}

return 0;

//и в итоге ваша функция делает тоже самое, что записано ниже
bool TForm1::stop()
{
    return 0;
    return 1; //сюда впринципе никогда не дойдет, можно тоже удалить
}


Автор: GITARIST84 3.4.2008, 14:00
Привожу полный смысл задачи smile 

Генерируются 2 числа(в заданном диапазоне) в бесконечном цикле,котрые затем должны пройти проверку(функция stop() ),при верном совпадении обоих чисел цикл должен остановиться, если же условие не выполняется генерируется новая пара чисел и проходит заново проверку и так пока не выполниться условие!






Автор: korian 3.4.2008, 14:02
Цитата(GITARIST84 @  3.4.2008,  13:00 Найти цитируемый пост)
Привожу полный смысл задачи 

я ж вам показал, ваша функция stop, из-за лишних знаков ";" разворачивается в return 0.
т.е. всегда возвращает 0

Добавлено через 2 минуты и 49 секунд
Цитата(GITARIST84 @  3.4.2008,  13:00 Найти цитируемый пост)
котрые затем должны пройти проверку

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

Автор: stat 3.4.2008, 15:43
Модератор: Сообщение скрыто.

Автор: Dmi3ev 3.4.2008, 21:36
как вариант
Код

int x, y;
x=0;
y=0;
for(;;)
 {
  randomize();// можно даже не здесь ставить))), но так получилось)))
  x=random(7)+92;
  y=random(7)+10;
  if (x>92 && y<14) break;
 }

Автор: inside_pointer 4.4.2008, 02:08
Цитата

при верном совпадении обоих чисел цикл должен остановиться.


Код

if(stop())break;


при верном совпадении stop должна вернуть 1, а у тебя чо

Автор: mrbrooks 4.4.2008, 08:15
Цитата(inside_pointer @ 4.4.2008,  02:08)
Цитата

при верном совпадении обоих чисел цикл должен остановиться.


Код

if(stop())break;


при верном совпадении stop должна вернуть 1, а у тебя чо

Учим матчасть

Автор: inside_pointer 4.4.2008, 11:53
Вот пусть учит

if срабатывает тогда когда его условие - истина, а не срабатывает (переходит в else) когда условие - ложь. Ложью считается ноль, всё остальное считается истиной.

Автор: mrbrooks 4.4.2008, 12:16
Цитата(inside_pointer @ 4.4.2008,  11:53)
Вот пусть учит

if срабатывает тогда когда его условие - истина, а не срабатывает (переходит в else) когда условие - ложь. Ложью считается ноль, всё остальное считается истиной.

Ему else не нужно. Если stop() возращает истину (x > 92 и y < 14) - то цикл прерывается. В противном случае побоку.
В данной ситуации даже кайфовей использовать while с инкрементом. Но кому как нравится.

Автор: inside_pointer 4.4.2008, 12:48
mrbrooks, ты его код-то читал ?

У него он(ну точки запятые понятно и лишние фигурные тоже) суть то две проверки одна первое число проверяет вторая второе, он писал про оба числа, я ему сказал ты типа смотри как ты условие проверяешь, у тебя ретурн неправильный

То что ему даже функция эта нафиг не нужна тут вопрос не стоит, он если чо-то написал то должен сам следить чо он пишет.

Автор: mrbrooks 4.4.2008, 13:19
пока я читал его код я сошел с ума  smile 

Автор: inside_pointer 4.4.2008, 13:33
Короче пусть учится синтаксису.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)