Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Бесконечный цикл 
:(
    Опции темы
GITARIST84
Дата 3.4.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Необходимо генерировать 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;
}
}




PM MAIL   Вверх
mrbrooks
Дата 3.4.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Во первых вещественные и целые не путай. Смотри сигнатуру вызываемых функций.


Это сообщение отредактировал(а) mrbrooks - 3.4.2008, 12:36
PM MAIL   Вверх
korian
Дата 3.4.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



Код

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; //сюда впринципе никогда не дойдет, можно тоже удалить
}



Это сообщение отредактировал(а) korian - 3.4.2008, 12:49
PM   Вверх
GITARIST84
Дата 3.4.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Привожу полный смысл задачи smile 

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






PM MAIL   Вверх
korian
Дата 3.4.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 8.3.2008
Где: Украина, Харьков

Репутация: 2
Всего: 17



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

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

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

и лучше скажите какую проверку, в каком диапазоне должны быть числа, а то из привиденного кода не понятно.
PM   Вверх
stat
Дата 3.4.2008, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 16.3.2008

Репутация: -5
Всего: -5




Модератор: Сообщение скрыто.

PM MAIL   Вверх
Dmi3ev
Дата 3.4.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



как вариант
Код

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



--------------------

PM MAIL   Вверх
inside_pointer
Дата 4.4.2008, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



Цитата

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


Код

if(stop())break;


при верном совпадении stop должна вернуть 1, а у тебя чо
PM MAIL   Вверх
mrbrooks
Дата 4.4.2008, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(inside_pointer @ 4.4.2008,  02:08)
Цитата

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


Код

if(stop())break;


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

Учим матчасть
PM MAIL   Вверх
inside_pointer
Дата 4.4.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



Вот пусть учит

if срабатывает тогда когда его условие - истина, а не срабатывает (переходит в else) когда условие - ложь. Ложью считается ноль, всё остальное считается истиной.
PM MAIL   Вверх
mrbrooks
Дата 4.4.2008, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(inside_pointer @ 4.4.2008,  11:53)
Вот пусть учит

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

Ему else не нужно. Если stop() возращает истину (x > 92 и y < 14) - то цикл прерывается. В противном случае побоку.
В данной ситуации даже кайфовей использовать while с инкрементом. Но кому как нравится.
PM MAIL   Вверх
inside_pointer
Дата 4.4.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



mrbrooks, ты его код-то читал ?

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

То что ему даже функция эта нафиг не нужна тут вопрос не стоит, он если чо-то написал то должен сам следить чо он пишет.
PM MAIL   Вверх
mrbrooks
Дата 4.4.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



пока я читал его код я сошел с ума  smile 
PM MAIL   Вверх
inside_pointer
Дата 4.4.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: -1
Всего: 12



Короче пусть учится синтаксису.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1047 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.