Образец решения задач.
Задача № 1. Напишите программу, анализирующую данные сейсмографа, который выводит сообщение «Опасность землетрясения большой разрушительной силы», если данные превысили 5 баллов по шкале Рихтера.
Анализ постановки задачи.
Для решения данной задачи применим алгоритмическую структуру ветвления, можно использовать как полную форму, так и сокращенную форму. Необходимо учитывать, что при написании сокращенной форме ветвления в данной задаче, в случае, если будет <= 5 баллам по шкале Рихтера, то никакого ответа выдаваться не будет. Поэтому лучше использовать полную структуру ветвления.
Входные данные.
Количество баллов по шкале Рихтера – ball (тип - вещественный).
Выходные данные.
Результатом будет сообщение, требуемое условием задачи.
Алгоритм.
· Ввести входные данные.
· Проанализировать входные данные.
· Вывести соответствующее сообщение.
Текст программы
Var
ball : real;
Begin
writeln(‘Введите количество баллов по шкале Рихтера’);
readln(ball);
if ball>5 then writeln(‘Опасность землетрясения большой разрушительной силы’)
else writeln(‘Количество баллов не превышает пяти’)
end.
Задача № 2. Вычислить Х для целочисленных данных aиb.
Анализ постановки задачи.
Решение данной задачи предполагает использование алгоритмической структуры ветвления. Для нахождения значения X необходимо проанализировать значения переменных a и b с помощью команды ветвления. В зависимости от того, как эти данные соотносятся – X подсчитывается по той или иной формуле.
Входные данные.
Неизвестные переменные в выражении – a, b (тип - целый).
Выходные данные.
Результат вычисления значения выражения – X (тип - вещественный).
Алгоритм.
· Ввести входные данные.
· Проанализировать входные данные:
· если a>b, то x= sqr(a)*b+1;
· если a<b, то x=(a-5)/12;
· если a=b, то x= a/8;
· Вывести результат на печать.
Текст программы
Var
a, b : integer;
x : real;
Begin
writeln(‘Введите’);
readln(a, b);
if a>b then x:=sqr(a)*b+1
else if a<b then x:=(a-5)/12
else x:=a/8;
writeln(‘x= ’, x)
end.
Задача № 3. В компьютер вводится информация: количество знаков в рекламе; на какой странице в газете будет печататься (если 1 или 4, то предоставляется скидка 50 %, если 2 или 3, то скидок нет); количество публикаций (если 2 публикации, то скидка 5 %, если 3 публикации, то скидка 10 %, если 4 публикации, то скидка 20 %, если > 5 публикации, то скидка 25 %). Необходимо определить стоимость рекламы с учетом всех скидок.
Анализ постановки задачи
Для подсчета стоимости рекламы необходимо умножить количество знаков на стоимость одного знака, и этого было бы достаточно, если бы условие задачи не предусматривало различные скидки. В этой связи воспользуемся алгоритмической структурой ветвления для учета всех скидок.
Входные данные.
Количество знаков в рекламе – kol_zn (тип – целый);
Номер страницы, на которой будет печататься реклама – num_str (тип – целый);
Количество публикаций – kol_pbl (тип – целый);
Стоимость одного знака – stoim_zn (тип – вещественный).
Выходные данные.
Cтоимость рекламы – stoim_rk (тип – вещественный).
Алгоритм.
· Ввести входные данные.
· Подсчитать стоимость рекламы по следующей формуле: stoim_rk= stoim_zn*kol_zn.
· Подсчитать стоимость рекламы с учетом всех скидок:
· если num_str=1 или num_str=4, то предоставляется скидка 50 %, т.е. stoim_rk= stoim_rk/2;
· если kol_pbl=2, то stoim_rk=stoim_rk-stoim_rk*0.05, иначе если kol_pbl=3, то stoim_rk=stoim_rk-stoim_rk*0.1, иначе если kol_pbl=4, то stoim_rk=stoim_rk-stoim_rk*0.2, иначе если kol_pbl>5, то stoim_rk=stoim_rk-stoim_rk*0.25.
· Вывести результат на печать.
Текст программы
var kol_zn, num_str, kol_pbl : integer;
stoim_zn, stoim_rk : real;
Begin
Writeln(‘Введите количество знаков вашей рекламы’);
Readln(kol_zn);
stoim_zn:=20.50; {стоимость одного знака}
stoim_rk= stoim_zn*kol_zn; {стоимость рекламы}
Writeln(‘Введите номер страницы 1-4 на которой будет размещаться ваша реклама’);
Readln(num_str);
If (num_str=1) or (num_str=4) then stoim_rk= stoim_rk/2;
Writeln(‘Введите количество публикаций вашей рекламы’);
Readln(kol_pbl);
If kol_pbl=2 then stoim_rk=stoim_rk-stoim_rk*0.05
else If kol_pbl=3 then stoim_rk=stoim_rk-stoim_rk*0.1
else If kol_pbl=4 then stoim_rk=stoim_rk-stoim_rk*0.2
else If kol_pbl>5 then
stoim_rk=stoim_rk-stoim_rk*0.25;
Writeln(‘Стоимость вашей рекламы= ’, stoim_rk)
end.
Задания для самостоятельного решения.
Вариант 1.
1. Напишите программу, анализирующую данные пожарного датчика в помещении, которая выводит сообщение «Пожароопасная ситуация», если температура в комнате превысила 600.
2. Вычислить Х для целочисленных данных aиb.
3. При выплате зарплаты из нее вычитается подоходный налог следующим образом: с зарплаты менее 120 р. подоходный налог не взимается, c зарплаты > 10000 – 20%, с остальных - 12%. Составьте программу, с помощью которой по окладу вычислялся бы подоходный налог и сумма денег к выплате.
Вариант 2.
1. Напишите программу, определяющую таможенную пошлину (30% от стоимости товара) на ввозимый в страну товар, если стоимость товара превышает 1000 $.
2. Вычислить Х для целочисленных данных aиb.
3. Составьте программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг и сумму денег, внесенную покупателем. Если сдачи не требуется, печатает на экране «Спасибо». Если денег внесено больше, то печатает «Возьмите сдачу» и указывает сумму сдачи. Если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы.
Вариант 3.
1. Составьте программу, проверяющую, является ли введенное число четным или нечетным.
2. Вычислить Х для целочисленных данных aиb.
3. Лицензионный сбор взимается в следующих размерах к минимальной месячной оплате труда в зависимости от действия лицензии: до 1 года – 30%, от 1 до 2 лет – 40%, от 2 до 3 – 50%, от 3 до 4 лет – 60%, от 4 до 5 – 70%. В случае утери лицензии сбор 20% от первоначального сбора. Составьте программу определения лицензионного сбора.
Вариант 4.
1. Напишите программу, анализирующую данные датчика, который измеряет уровень загрязнения воды и выводит сообщение «Уровень загрязнения превышает норматив», если норма составляет X у.е.
2. Вычислить Х для целочисленных данных aиb.
3. Для определения рентабельности автобусного маршрута вычисляют разницу между сданными деньгами за проезд и затратами на обеспечение маршрута (зарплата + бензин + ремонт). Составьте программу определения самого рентабельного из трех маршрутов в городе.
Вариант 5.
1. В компьютер поступила информации о доходе за истекший год двух рынков города. Определите “лидера”, т.е. рынок с наибольшим доходом.
2. Вычислить Х для целочисленных данных aиb.
3. При начислении больничного листа учитывается непрерывный трудовой стаж: до 5 лет – 60%, от 5 до 8 лет – 80%, от 8 и дальше – 100% последнего оклада. Составьте программу начисления больничного листа служащему.
Вариант 6.
1. Напишите программу, которая по паролю определят доступность сотрудника к секретной информации в базе данных (есть доступ/нет доступа).
2. Вычислить Х для целочисленных данных aиb.
3. Составьте программу, которая для числа K (от 1 до 99), введенного вами, напечатает фразу «Мне K лет», где K – введенное число, при этом в нужных случаях слово «лет» заменяя на «год» или «года». Например, при K=70 «Мне 70 лет», при K=15 «Мне 15 лет», при K=23 «Мне 23 года», при K=31 «Мне 31 год».
Вариант 7.
1. Напишите программу, которая по возрасту человека, введенному с клавиатуры, определяет является ли человек пенсионером или нет.
2. Вычислить Х для целочисленных данных aиb.
3. Даны два действительных положительных числа. Арифметические действия пронумерованы (1-сложение, 2-вычитание, 3- умножение, 4 –деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.
Вариант 8.
1. Напишите программу, которая по возрасту и полу человека, определяет является ли он военнообязанным (мужчина – военнообязанный; женщина - невоеннообязанная).
2. Вычислить Х для целочисленных данных aиb.
3. В продаже имеются компактные компьютеры марки: TOSHIBA $500; SHARP $900; DELL $1350. Оптовым покупателям (>10) – скидка 17%. Составьте программу определения стоимости покупки компьютеров в $ и в рублях по курсу.
Вариант 9.
1. В компьютер поступила информации о доходе за истекший год двух рынков города. Определите рынок с наименьшим доходом.
2. Вычислить Х для целочисленных данных aиb.
3. Составьте программу, которая по введенному вами K – числу грибов печатает фразу «Мы нашли в лесу K грибов», причем согласовывает окончание слова «гриб» с числом K. Количество грибов может быть любым целым числом: 1, 3, 34, 127 и т.д. Окончание фразы определяется значением последней цифры.
Вариант 10.
1. Напишите программу, которая по возрасту человека, введенному с клавиатуры, определяет является ли человек долгожителем или нет (более 90 лет - долгожитель).
2. Вычислить Х для целочисленных данных aиb.
3. В ЭВМ поступают результаты соревнований по плаванию для 3-х спортсменов. Составьте программу, которая выбирает лучший результат и выводит его на экран с сообщением, что это результат победителя заплыва.
Контрольные вопросы:
1. В каких случаях используется вложенный оператор ветвления?
2. Что представляет собой составное условие?
3. Когда используется составной оператор?
4. В чем заключается работа оператора ветвления?
5. Как записывается вложенный оператор ветвления?
6. Сколько вложений можно делать в команде ветвления?
7. Каков принцип работы структуры ветвления? Запись на Паскале.
8. В каких случаях используется полная структура ветвления, в каких сокращенная?
9. Найдите ошибку в следующем фрагменте программы:
if 1<x<2 then x:x+1; y:=0;
else x:=0; y:=y+1;
10.Найдите ошибку в следующем фрагменте программы:
if 1<x and x<2 then begin x:x+1; y:=0 end;
else begin x:=0; y:=y+1 end