Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 01.03.2011, 23:45   #1 (permalink)
SKRANT
Новичок
 
Регистрация: 01.03.2011
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программирование разветвлений с помощью оператора case

В паскале задание:составьте программу с использлванием оператора case с выводом исходных данных и результатов.(помогите пожалуйста!!!):
Для произвольного целого числа k напишите фразу "у меня в кармане k рублей ", согласовав окончание слова "рубль" с числом k.
SKRANT вне форума   Ответить с цитированием

Старый 01.03.2011, 23:45
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Вы можете найти ответ в похожих обсуждениях

Case 3
Какого оператора и тариф выбрать для офиса? Москва
Turbo Pascal. Оператор CASE
Оператор выбора CASE.

Старый 02.03.2011, 09:53   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от SKRANT Посмотреть сообщение
В паскале задание:составьте программу с использлванием оператора case с выводом исходных данных и результатов.(помогите пожалуйста!!!):
Для произвольного целого числа k напишите фразу "у меня в кармане k рублей ", согласовав окончание слова "рубль" с числом k.
И что дальше? С помощью оператора Case расписать, в зависимости от k, все возможности, даваемые означенной суммой - от покупки газеты то приобретения яхты и особняка на Лазурном берегу с обслугой из голливудских кинозвезд? Так?
Vladimir_S вне форума   Ответить с цитированием
Старый 03.03.2011, 06:27   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Тут скорее всего речь идёт о правильном окончании слова рубль в зависимости от значения k

Алгоритм:
1) вводите k
2) находите остаток от деления k на 100, при необходимости - примените нахождение остатка от деления на 10 и анализируйте его через case, выводя сообщение
Не забудьте учесть, что есть несколько вариантов окончания:
0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, ... - рублей
1, 21, 31 ... - рубль
2, 3, 4, 22, 23, 24 ... - рубля
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 03.03.2011, 10:46   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

А, дошло наконец! Ну тогда - так:
Код:
VAR
 k,m100,m10,d10:Word;

BEGIN
 Write('k= ');
 ReadLn(k);
 m100:=k mod 100;
 d10:=m100 div 10;
 m10:=m100 mod 10;
 WriteLn;
 Write('У меня в кармане ',k);
 Case d10 of
  1: writeln(' рублей');
  else Case m10 of
        1: writeln(' рубль');
        2,3,4: writeln(' рубля');
        else writeln(' рублей');
       end;
 end;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.03.2011, 18:44   #5 (permalink)
diagen_62
Member
 
Регистрация: 19.03.2011
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

здравствуйте!помогите пожалуйста!мне нужно объяснить преподу что значат каждые строчки этой программы(что значат и зачем в этой программе)!особенно вот эти :
m100:=k mod 100;
d10:=m100 div 10;
m10:=m100 mod 10;
writeln и readln объяснять не надо
заранее спасибо!
diagen_62 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.03.2011, 19:38   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от diagen_62 Посмотреть сообщение
здравствуйте!помогите пожалуйста!мне нужно объяснить преподу что значат каждые строчки этой программы(что значат и зачем в этой программе)!особенно вот эти :
m100:=k mod 100;
d10:=m100 div 10;
m10:=m100 mod 10;
writeln и readln объяснять не надо
заранее спасибо!
Хорошо.
Итак, суть задания: выяснить, какое окончание слова с корнем "рубл" нужно применить в зависимости от суммы денег.
Прежде всего, заметим, что количество тысяч и сотен нас не интересует: с точки зрения грамматики 45321, 721 или просто 21 - одно и то же. Все три суммы звучат, как "та-та-та двадцать один рубль". А потому будем иметь дело только с остатком от деления количества денег на 100. В Паскале это записывается, как

m100:=k mod 100;

В приведенном примере m100=21.
Далее анализируем этот остаток.
Для дальнейшего решения задачи нам понадобятся две величины: результат целочисленного деления числа m100 на 10 (обозначим его d10) и остаток от деления числа m100 на 10 (его обозначим m10). Найдем их:

d10:= m100 div 10;
m10:= m100 mod 10;

Если m100 составляет 10, 11, 12, 13, 14, 15, 16, 17, 18 или 19, то следует писать "рублей". Приведенные числа объединяет то, что результат целочисленного деления m100 на 10 (т.е. d10) равен 1. Так и запишем:

Case d10 of
1: writeln(' рублей');

Если же d10 отличен от 1, то тут опять возникает ветвление. Сделаем его по остаткам m10. Эти остатки составляют:
1 для чисел 1, 21, 31, 41, 51, 61, 71, 81, 91. В этом случае следует писать "рубль".
2, 3, 4 для чисел 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 44, 82, 83, 84, 92, 93, 94. Во всех этих случаях следует писать "рубля".
Во всех прочих случаях, т.е. когда остатки составляют 0, 5, 6, 7, 8 и 9, следует писать "рублей".
Программа реализует описанный алгоритм.
Vladimir_S вне форума   Ответить с цитированием
Старый 19.03.2011, 19:49   #7 (permalink)
diagen_62
Member
 
Регистрация: 19.03.2011
Сообщений: 30
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо тебе огромное!))))))выручил!
diagen_62 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:02.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.