Помощь - Поиск - Пользователи - Календарь
Полная версия: оператор Case
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
nikon
начал pascal c нуля. все вроде нормально но есть некоторые "воросы"..
в переменную типа char вводится символ с клавиатуры.
прога должна выдать:

цифра от 0 до 9 ;
латинская строчная буква ;
латинская прописная буква ;

Код


program zad5_11;
  uses crt;
var
  x:char;

begin
    clrscr;
    writeln('введите символ');
    readln(x);
    case x of

     '0'..'9':writeln('цифра от 0 до 9');
    'a'..'z': writeln('латинская строчная буква');
    'A'..'Z': writeln('латинская прописная буква')
    else writeln('ошибка ввода ')
    end;
   readln
end.



загвоздка в том что под условие '0'..'9' - подпадает и 1 и 11 и 111 т. к. char понимает только первый символ

вот если написать '2'..'9' то 1 уже не попадает в интервал..
можно использовать таблицу ASCII и написать перевести 0 в chr(48) но и с этим тоже не получается
volvo
Цитата(nikon @ 24.03.05 10:10)
в переменную типа char вводится символ с клавиатуры.
...
загвоздка в том что под условие '0'..'9' - подпадает и 1 и 11 и 111 т. к. char понимает только первый символ



Стоп, стоп....
При таком определении:
Код
var
 x:char;

в Х может храниться только 1 символ... Какие 11, 111 и т.д. ? Все правильно сделано, по условию... Что Вы хотите изменить? Ничего менять не надо...
klem4
можно так :

Код

x:=readkey;
case x of
...
end;


но Volvo прав, char хранит только один символ, вводить больше не имеет смысла
nikon
я понимаю что в принципе все правильно :D
я знаю что забегаю вперед
просто хотел расширить возможности программы чтобы при вводе числа больше 9 тоже выдавалась ошибка.
А за ответы спасибо smile.gif
volvo
Поймите, что в Char Вы не сможете внести "число больше 10". А со строками, к сожалению, Case не работает...

Единственное, что мне не понятно - что значит "расширить программу". Пример ввода и соответствующего ему вывода (после "расширения", естественно) можно посмотреть? ;)
Guest
volvo: что значит "расширить программу"? - это значит что есть условие, но иногда хочется сделать что-то большее ))

в задании требовалось по экрану разбросать 1000 звезд случайным цветом в случайном порядке

начальный вариант проги и что из этого получилось смотрите в теме:
оператор цикла for (от звезд до заставки "матрица" минимальными средствами)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.