Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Использование оператора варианта case в Turbo Pascal

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Использование оператора варианта case в Turbo Pascal
Имя
Сообщение << Старые топики   Новые топики >>
Использование оператора варианта case в Turbo Pascal - 2005-02-23 12:25:27   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
Собственно сабж. Написал прогу с использованием этого оператора. Суть проги заключается в следующем:
Необходимо вывести на печать название дня недели соответствующее заданному числу ''a'' при условии что в месяце 31 день и 1ое число - понедельник. Саму прогу я написал без проблем. Вот исходник:
var
d:byte;
begin
write(''d='');
readln(d);
case d mod 7 of
1:writeln(''ponedelnik'');
2:writeln(''vtornik'');
3:writeln(''sreda'');
4:writeln(''chetverg'');
5:writeln(''pyatnica'');
6:writeln(''subbota'');
0:writeln(''voskresenie'');
end;
end.

Далее я захотел реализоватьобработку ошибочно введённых чисел {32 к примеру}.
Для этого к вышенаписанному коду я добавил ветвь else.
Потом понял что у всх чисел делённых на семь будет целыи остаток.
Собственно вопрос: как это можно сделать? Я имею в виду обработку ''неправильных'' чисел.
Post #: 1
Использование оператора варианта case в Turbo Pascal - 2005-02-23 13:15:05   
stinger25

Сообщений: 276
Оценки: 0
Присоединился: 2004-12-21 02:41:03
поставь проверку на d до case исли она более 31 или менее 1 проси ввести число заново
Post #: 2
Использование оператора варианта case в Turbo Pascal - 2005-02-23 13:16:46   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
сеичас попробую.
Post #: 3
Использование оператора варианта case в Turbo Pascal - 2005-02-23 13:44:07   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
Короче я сделал так:
после ввода d поставил условие что если d больше 0 и меньше 32 то выполнять задачу.
но если ввести в=32 к примеру то прога просто это проигнорирует так как отсутствует ветвь else. а else присобачить у мня не получается т.к. Паскаль считает что ветвь else принадлежит case of а она по идее должна принадлежать if then. Короче я запутался. Может кто нить выложить исходныи код проверки. И ещё надо чтобы если число задано неправильно { меьше или равное 0 и большое чем 32 }
выводилась мессага '!'. Короче я просто запутался с else.
Помогите плз!
Post #: 4
Использование оператора варианта case в Turbo Pascal - 2005-02-23 20:49:06   
peng0

Сообщений: 20
Оценки: 0
Присоединился: 2005-02-23 14:12:52
label : i;
var
day:byte;
begin
i:write('day');
readln(day);
if i>31 then goto i;
case day mod 7 of
1:writeln('ponedelnik');
2:writeln('vtornik');
3:writeln('sreda');
4:writeln('chetverg');
5:writeln('pyatnica');
6:writeln('subbota');
0:writeln('voskresenie');
else writeln('faq');
end;
end.
Post #: 5
Использование оператора варианта case в Turbo Pascal - 2005-02-23 21:03:32   
}{akep

Сообщений: 23
Оценки: 0
Присоединился: 2004-07-29 20:58:46
var d:byte;
begin
write('d=');
readln(d);
if (d<0) or (d>32) then writeln('Error!');
else begin
case d mod 7 of
1:writeln('ponedelnik');
2:writeln('vtornik');
3:writeln('sreda');
4:writeln('chetverg');
5:writeln('pyatnica');
6:writeln('subbota');
0:writeln('voskresenie');
end;
end;
end.

не проверял, но работать должно
Post #: 6
Использование оператора варианта case в Turbo Pascal - 2005-02-24 08:55:27   
peng0

Сообщений: 20
Оценки: 0
Присоединился: 2005-02-23 14:12:52
label i;
var
day:byte;
begin
i:write('day');
readln(day);
if day>31 then goto i;
case trunc(day mod 7) of
1:writeln('ponedelnik');
2:writeln('vtornik');
3:writeln('sreda');
4:writeln('chetverg');
5:writeln('pyatnica');
6:writeln('subbota');
0:writeln('voskresenie');
else writeln('faq');
end;
readln;
end.
Post #: 7
Использование оператора варианта case в Turbo Pascal - 2005-02-25 01:32:25   
stinger25

Сообщений: 276
Оценки: 0
Присоединился: 2004-12-21 02:41:03
var
d:byte;
begin
repeat
write('d=');
readln(d);
until(d<32);
case d mod 7 of
1:writeln('ponedelnik');
2:writeln('vtornik');
3:writeln('sreda');
4:writeln('chetverg');
5:writeln('pyatnica');
6:writeln('subbota');
0:writeln('voskresenie');
end;
end.

так тоде должно работать, условие в until вроде так задается, давно не писал на паскале (делфи), подзабыл слегка
Post #: 8
Использование оператора варианта case в Turbo Pascal - 2005-02-26 13:42:51   
Zhech

Сообщений: 12
Оценки: 0
Присоединился: 2005-02-21 18:04:22
Мужики, ну вы и даете))) Чего вас на лейблы понесло? данная прога ж… как это… ну, не то, что можно сильно обдумывать.. Короче, смотри:
var
day: integer;
begin
WriteLn('day?:');
ReadLn(day);
if ((day >= 1) and (day <= 31)) then begin
case (day mod 7) of
1: WriteLn('ponedelnik');
2: WriteLn('vtornik');
……..
……..
7: WriteLn('voskresene');
end
else begin
WriteLn('ne pravilno vveli chislo!!');
end;
end.
А вообще, если чесно, я вообще не понимаю, нафиг она такая нужна))) И, блин, кака это ты вычисляешь, какой день недели у тебя просто по числу, без месяца и года[sm=mad.gif][sm=9.gif]
Post #: 9
Использование оператора варианта case в Turbo Pascal - 2005-02-26 17:30:17   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
2Zhech поверь она мне нужна. твои вариант ИМХО не заработает.
2all всё я сделал. спасибо за помощь.
Post #: 10
Использование оператора варианта case в Turbo Pascal - 2005-02-26 17:31:43   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
2Zhech поверь она мне нужна. твои вариант ИМХО не заработает.
2all всё я сделал. спасибо за помощь.
Post #: 11
Использование оператора варианта case в Turbo Pascal - 2005-02-27 06:26:40   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Я не понимая чего вы мучаетесь, в стандартной библиотеке C, например, есть функции для конвертации структурок типа timeval_t и time_t куда угодно и с учётом установок локали. Ну неужто проф. Вирт не подумал и не приделал аналогичные возможности к Pascal? поройтесь в библиотеках.
Post #: 12
Использование оператора варианта case в Turbo Pascal - 2005-02-27 14:25:50   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
да я искал их в том то и всё дело: не нашёл.
Post #: 13
Использование оператора варианта case в Turbo Pascal - 2005-02-28 02:30:11   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Тады ищи в Win32API, там должно быть.
Post #: 14
Использование оператора варианта case в Turbo Pascal - 2005-02-28 15:23:15   
mayday

Сообщений: 14
Оценки: 0
Присоединился: 2004-11-18 00:32:28
ну вроде так..

var<BR>d:byte;<BR>begin<BR>repeat<BR>write('d=');<BR>readln(d);<BR>until(d&lt;32) and (d&gt;0); <BR>case d mod 7 of<BR>1:writeln('ponedelnik');<BR>2:writeln('vtornik');<BR>3:writeln('sreda');<BR>4:writeln('chetverg');<BR>5:writeln('pyatnica');<BR>6:writeln('subbota');<BR>0:writeln('voskresenie');<BR>end;<BR>readln;<BR>end.
Post #: 15
Использование оператора варианта case в Turbo Pascal - 2005-02-28 18:55:05   
ни разу не дигитал ака свалил

Сообщений: 695
Оценки: 0
Присоединился: 2005-02-22 19:55:08
2rgo покопаюсь хотя думаю мои поиски меня никчему не приведут[sm=8.gif]
2mayday усё проблема решена спасибо.
Post #: 16
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Использование оператора варианта case в Turbo Pascal







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.