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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 21:53   #1
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию case

Уважаемые формумчане, подскажите пож-та давно не писавшему и забывшему Delphi.

Как в case объявить условие x>=5?
как поставить конкретные значения - знаю, как поставить диапазон - знаю...
а вот как сделать "от числа до бесконечности" - не знаю и/или забыл
может ли вообще case обрабатывать подобного рода запросы или надо ставить границу типа данных, с которым имею дело? (т.е. 5..max)

для тех, кто будет искать (возможно):
конкретное число:
Код:
case x of
1: begin ... end;
2: begin ... end;
3: begin ... end;
...
else ... ;
end;
диапазон:
Код:
case x of
1..3: begin ... end;
6..10: begin ... end;
...
else ... ;
end;
Chugun вне форума Ответить с цитированием
Старый 13.10.2012, 22:09   #2
Defender42
Пользователь
 
Регистрация: 27.12.2008
Сообщений: 89
По умолчанию

через условие if ?
Defender42 вне форума Ответить с цитированием
Старый 13.10.2012, 22:15   #3
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Defender42 Посмотреть сообщение
через условие if ?
дело в том, что по условию данной мне задачи,
Код:
 if ... then ... else ...
использовать запрещено

НЕОБХОДИМО использовать ТОЛЬКО
Код:
 case ... of ... else ...
задачка абсолютно тривиальная, является лаб. работой №2 на первом курсе универа на гуманитарном факультете (попросили оказать помощь)

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

через if'ы всё делается проще простого, но применять их нельзя
Chugun вне форума Ответить с цитированием
Старый 13.10.2012, 22:25   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
или надо ставить границу типа данных, с которым имею дело?
Именно так и никак иначе.
xoodoo вне форума Ответить с цитированием
Старый 13.10.2012, 22:29   #5
Вадим Мошев

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

Ну, можно попробовать так, только это немного (ИМХО) быдокодом пахнуть будет:
Код:
case x of
1..4: ; // Здесь именно точка с запятой, мы ничего тупо не делаем
else // здесь делаем то, что требуется в случае выполнения x>=5
Пойдёт?
Вадим Мошев вне форума Ответить с цитированием
Старый 13.10.2012, 22:33   #6
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Ну, можно попробовать так, только это немного (ИМХО) быдокодом пахнуть будет:
Код:
case x of
1..4: ; // Здесь именно точка с запятой, мы ничего тупо не делаем
else // здесь делаем то, что требуется в случае выполнения x>=5
Пойдёт?
увы
есть 3 формулы, каждая из который выполняется в зависимости от условий:
1) -3<=x<=3
2) x>=5
3) всё остальное
первое и последнее описать в case не представляет трудностей
вопрос со вторым
x: double
Chugun вне форума Ответить с цитированием
Старый 13.10.2012, 22:33   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Пойдёт?
неа
при x=-1 чего буит делать программа???
при
Код:
х:double;
case один черт не прокатит
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 13.10.2012 в 22:37.
Mad_Cat вне форума Ответить с цитированием
Старый 13.10.2012, 22:39   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если x Integer, то его MAX=214748364. От этого плясать. Для других целочисленных типов другие границы
Код:
  case i of
  -3..3: begin end;
  5..214748364: begin end;
  else begin end;
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 13.10.2012 в 22:44.
Аватар вне форума Ответить с цитированием
Старый 13.10.2012, 22:50   #9
Chugun
Пользователь
 
Регистрация: 04.02.2009
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
неа
при x=-1 чего буит делать программа???
при
Код:
х:double;
case один черт не прокатит
Вы чертовски правы.... к моему сожалению
дабл он "не хавает"
буду думать в другом направлении...

Код:
procedure TForm1.Button1Click(Sender: TObject);
var x, y: double; i: integer;
begin
x:=strtofloat(edit1.text);
i:=trunc(x);
case i of
-3 .. 3: y:=1.0;
5 .. 214748364: y:=2.0;
else y:=3.0;
end;

label1.Caption:=floattostr(y);

end;
определённо попахивает быдло-кодом...
но для 1 курса гуманитария, думаю, хватит чтобы поставили "зачет"

Последний раз редактировалось Stilet; 14.10.2012 в 12:27.
Chugun вне форума Ответить с цитированием
Старый 13.10.2012, 23:02   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Нужен case?
Ловите
Код:
case (x>=-3) and (x<=3) of 
true: ;{1 участок}
false: begin
Case (x>=5) of
true:;{2 участок}
false:;{все остальное}
end;
end;
end;
ваш вариант не прокатит имхо( -3.07 вернет вам -3 а там уже другой участок)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
case от а до я Horus92 Помощь студентам 7 15.07.2010 01:43
Use case elenSV Помощь студентам 0 09.06.2010 22:28
Case of Lemo Помощь студентам 4 06.06.2010 01:12