Долгих Н. 10 «з»
Для начала решим одну задачу уже известным способом Условие: по введенному 8 -мизначному числу определить является ли это датой (в формате дд. мм. гггг), если такой даты не существует сообщить на экран
Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая дата. В решении необходимо учитывать число месяцев, количество дней в каждом месяце, а также високосные года.
Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая дата. Нам понадобятся переменные для самого числа (а), для дня(d), месяца(m), года(g). Сначала определим, високосный ли год. Восьмизначное число записано в формате ДДММГГГГ, то есть последние 4 цифры – год (g). Уберем из числа ДДММ, для этого воспользуемся MOD – делением с выводом на экран остатка. Разделим на 10 000. Запись в Паскале будет следующей: g: =m mod 10000; Если остаток равен нулю – год високосный, во втором месяце года 29 дней, а не 28. Это нужно четко отразить в задаче. vis: =g mod 4; if (vis=0) and (m=2) and (d<30) then …
Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая дата. Итак, если год високосный, месяц второй, и число, обозначающее день<30, можем вывести на экран дату: if (vis=0) and (c 1=2) and(d<30) then writeln(d, '. ', m, '. ', g, '. ') else …
Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая дата. if (vis=0) and (m=2) and (d<30) then writeln(d, '. ', m, '. ', g, '. ') else … Рассуждаем дальше. Если год не високосный, то есть какой то остаток от деления месяца(m), число дней в феврале = 28, а остальные числа можно объединить группами, так, например, 31 день содержат 1, 3, 5, 7, 8, 10, 12 месяцы, 30 дней – 4, 6, 9, 11. В остальных случаях дата не существует. Используем IF: if ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12)) and (d<32) or (m=2) and (d<29) or ((m=4) or (m=6) or (m=9) or (m=11)) and (d<31) then writeln (d, '. ', m, '. ', g, '. ') else writeln ( ' такой даты не существует ' );
var a, d, m, o 1, vis, o 2: integer; BEGIN read (a); d: =a div 1000000; {день} m: =a mod 1000000; {ммгггг} g: =m mod 10000; {гггг} m: =m div 10000; {мм} vis: =g mod 4; if (vis=0) and (m=2) and(d<30) then writeln(d, '. ', m, '. ', g, '. ') else if ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12)) and (d>0) and (d<32) or (m=2) and (d>0) and (d<29) or ((m=4) or (m=6) or (m=9) or (m=11)) and (d>0) and (d<31) then writeln (d, '. ', m, '. ', g, '. ') else writeln ( 'такой даты не существует ' ); END.
Тестируем программу: Программа работает вполне корректно. Задача решена.
СЛОЖНО!!! Можно Для проще!!! этого сначала разберем Оператор выбора case
Оператор выбора case является обобщением оператора if и позволяет сделать выбор из произвольного числа имеющихся вариантов. Как и в операторе if здесь может присутствовать слово else, имеющее тот же смысл
Оператор выбора выполняет одно действие из нескольких в зависимости от значения некоторого выражения, называемого переключателем. Он имеет следующий вид: case переключатель of список выбора 1: оператор 1; список выбора 2: оператор 2; . . . список выбора N: оператор N else оператор 0 end; ;
Переключатель представляет собой выражение целого, символьного типа или логического типа, а списки выбора содержат константы того же типа, что и переключатель. Как и в операторе if, ветка else может отсутствовать.
Если при выполнении условия действий больше одного, то вид оператора выбора будет таким: case переключатель of список выбора 1: begin группа действий 1; end; . . . список выбора N: begin группа действий N; end; else begin группа действий 0; end; группа действий перечисляется через ;
ПРАВИЛО РАБОТЫ ОПЕРАТОРА: 1. Вычисляется значение выражения. 2. Это значение сравнивается с константами, стоящими после слова of 3. Если значение выражения равно какой-либо константе, то выполняется оператор, стоящий после этой константы. 4. Если значение выражения не совпадает ни с какой константой, то управление передается оператору, следующему после слова End; 5. Если используется 2 -ой формат записи оператора, то управление передается оператору, следующему после слова Else. Если вместо одного оператора в строке нужно использовать несколько, то используют операторные скобки Begin … End;
Оператор case работает следующим образом. Если в одном из списков выбора найдено текущее значение переключателя, то выполняется оператор, соответствующий данному списку. Если же значение переключателя не найдено ни в одном списке, то выполняется оператор по ветке else или, если ветка else отсутствует, оператор case не выполняет никаких действий.
Список выбора состоит либо из одной константы, либо из диапазона значений вида a. . b (константа a должна быть меньше константы b); можно также перечислить несколько констант или диапазонов через запятую. Например: 1. . 5 или 1, 2, 3, 4, 5 или 1, 2. . 5 Или так: ‘a’, ’b’, ’c’, ’d’ или ‘a’. . ’d’ или ‘d’, ’a’. . ’c’
Списки выбора не должны пересекаться. Например, следующий фрагмент приведет к ошибке компиляции "Пересечение диапазонов меток в операторе case". case i of 2, 5: write(1); 4. . 6: write(2); end; Здесь в обоих списках выбора содержится число 5
Задача Нарисовать блок-схему и составить программу, позволяющую получить словесное описание школьных отметок (1 -плохо, 2 -неудовлетворительно, 3 -удовлитворительно, 4 -хорошо, 5 -отлично) Если число не находится в диапазоне , то вывести строку «ошибка» .
Блок-схема начало Ввод N ДА N=1 НЕТ ПЛОХО ДА НЕУДОВЛЕТВОРИТЕЛЬНО N=2 НЕТ ДА N=3 НЕТ УДОВЛЕТВОРИТЕЛЬНО ДА ХОРОШО N=4 НЕТ ДА N=5 НЕПР. ВВОД конец ОТЛИЧНО
На Паскале Program Zadacha; var n: integer; begin writeln (‘Введите номер оценки’); readln(n); case n of 1: writeln (‘Плохо’); 2: writeln (‘Неудовлетворительно’); 3: writeln (‘Удовлетворительно’); 4: writeln (‘Хорошо’); 5: writeln (‘Отлично’); else writeln (‘ошибка’); end; readln; end.
Вводиться число от 1 до 4, определяющее пору года. Дать название этой поры года (1 - зима, 2 - весна, 3 - лето, 4 - осень).
Вводиться число от 1 до 4, определяющее пору года. Дать название этой поры года (1 - зима, 2 - весна, 3 - лето, 4 - осень). program zadacha 2; var n: byte; BEGIN writeln('Введите номер поры года'); readln(n); case n of 1: writeln('зима'); 2: writeln('весна'); 3: writeln('лето'); 4: writeln('осень'); Else writeln('неправильно ввели номер поры года'); end; END.
По номеру дня недели вывести соответствующее ему название
program prim 1; var z: integer; begin writeln('введи номер дня недели'); readln(z); case z of 1: writeln('понедельник'); 2: writeln('вторник'); 3: writeln('среда'); 4: writeln('четверг'); 5: writeln('пятница'); 6: writeln('суббота'); 7: writeln('воскресенье'); else writeln('нет такого дня недели'); end; readln; end.
по введенному номеру дня недели определить рабочий день или будний, в случае ошибки ввода сообщить на экран
Условие: по введенному номеру дня недели определить рабочий день или будний, в случае ошибки ввода сообщить на экран Решение: var n: integer; BEGIN Read(n); case n of 1. . 5: writeln('Будний день'); 6, 7: writeln('Выходной день'); else: writeln('Нет такого дня'); end; END.
Составить программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную единицу, дописывает слово «Копейка» в правильной форме. Например, 5 копеек, 41 копейка и т. д.
Программа: program c; var a: integer; begin writeln ('количество копеек = '); readln (a); case (a) of 1, 21, 31, 41, 51, 61, 71, 81, 91: writeln ('копейка'); 2. . 4, 22. . 24, 32. . 34, 42. . 44, 52. . 54, 62. . 64, 72. . 74, 82. . 84, 92. . 94: writeln ('копейки'); else writeln ('копеек'); end.
В одной компьютерной игре не существует числительных. Потому фраза «у вас семь чёрных драконов, а у вашего врага — сорок» будет выглядеть так: «у вас немного чёрных драконов, а у вашего врага — толпа» . Необходима программа заменяющая число (вводится число от 1 до 2000) на существительное по следующей закономерности: 1 до 4 = несколько; от 5 до 9 = немного; от 10 до 19 = отряд; от 20 до 49 = толпа; от 50 до 99 = орда; от 100 до 249 = множество; от 250 до 499 = сонмище; от 500 до 999 = полчище; от 1000 = легион
var a: integer; BEGIN readln(a); case a of 1. . 4 : writeln(‘несколько’); 5. . 9 : writeln(‘немного’); 10. . 19 : writeln(‘отряд’); 20. . 49 : writeln(‘толпа’); 50. . 99 : writeln(‘орда’); 100. . 249: writeln(‘множество’); 250. . 499: writeln(‘сонмище’); 500. . 999: writeln(‘полчище’); else writeln(‘легион’); end; END.
Найти наибольшее из двух действительных чисел, используя оператор выбора.
Найти наибольшее из двух действительных чисел, используя оператор выбора. I способ Program Usl 1; Var A, F : Real; Begin Write. Ln('Введите действительное число: '); Read. Ln(A); IF A <= 0 THEN F=0 ELSE IF A <= 1 THEN F = Sqr(A) - A ELSE F = Sqr(A) - SIN(Pi * Sqr(A)); Write. Ln ('Значение функции F(x) при x = ', A: 10: 6, ' равно ', F: 10: 6); END. Где A: 10: 6 и F: 10: 6 это изменение формата числа
Найти наибольшее из двух действительных чисел, используя оператор выбора. II способ Var Max, X, Y : Real; BEGIN Write('Введите два числа: '); Read. Ln(X, Y); Case X > Y Of TRUE : Max : = X; FALSE : Max : = Y; End; Write. Ln(‘большее из двух: ', Max) END.
Дано действительное число a. Вычислить f(a), если
Program Usl 1; Var A, F : Real; Begin Write. Ln('Введите действительное число: '); Read. Ln(A); IF A <= 0 THEN F=0 ELSE IF A <= 1 THEN F = Sqr(A) - A ELSE F = Sqr(A) - SIN(Pi * Sqr(A)); Write. Ln('Значение функции F(x) при x = ', A: 10: 6, ' равно ', F: 10: 6); END. Где A: 10: 6 и F: 10: 6 это изменение формата числа
Написать программу которая показывает чётное число или нет, если оно меньше 10. В случае, если 9
Примеры: Программы показывает чётное число или нет, если оно меньше 10. В случае, если 9
В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая позволяет ввести номер года и печатает его название по старояпонскому календарю. Справка: 1996 г. — год крысы — начало очередного цикла.
Поскольку цикл является двенадцатилетним, поставим название года в соответствие остатку от деления номера этого года на 12.
Program Goroskop; Var Year : Integer; Begin Write('Введите год '); Read. Ln(Year); CASE Year MOD 12 OF 0 : Write. Ln('Год Обезьяны'); 1 : Write. Ln('Год Петуха'); 2 : Write. Ln('Год Собаки'); 3 : Write. Ln('Год Свиньи'); 4 : Write. Ln('Год Крысы'); 5 : Write. Ln('Год Коровы'); 6 : Write. Ln('Год Тигра'); 7 : Write. Ln('Год Зайца'); 8 : Write. Ln('Год Дракона'); 9 : Write. Ln('Год Змеи'); 10 : Write. Ln('Год Лошади'); 11 : Write. Ln('Год Овцы') END; END.
Пример программы, которая по введённому числу вида nn. nnnn выводит название месяца и год по китайскому календарюprogram mesyac; var a: longint; var b, c: integer; begin writeln (‘введите число'); readln(a); b: =(a div 10000)mod 100 ; write (‘число ', a div 1000000); case b of 1 : write (' январь'); 2 : write (' февраль'); 3 : write (' март'); 4 : write (' апрель'); 5 : write (' май'); 6 : write (' июнь'); 7 : write (' июль); 8 : write (' август'); 9 : write (' сентябрь'); 10 : write (' октябрь'); 11 : write (' ноябрь'); 12 : write (' декабрь'); end; c: = (a mod 10000) mod 12; case c of 0 : write (‘обезьяна '); 1 : write (' петух'); 2 : write (' собака'); 3 : write (' свинья'); 4 : write (' крыса '); 5 : write (' бык'); 6 : write (' тигр'); 7 : write (' кролик'); 8 : write (' дракон'); 9 : write (' змея'); 10 : write (' лошадь'); 11 : write ( ‘овца '); end.
САМОСТОЯТЕЛЬНО! Составить программу, которая по номеру месяца, введенного с клавиатуры, выводит количество дней в нем. В программе учесть количество дней в феврале для високосного и не високосного годов.
Program first; var n: integer; begin writeln('введите номер месяца'); readln(n); case n of 1: writeln('январь'); 2: writeln('Февраль'); 3: writeln('март'); 4: writeln('апрель'); 5: writeln('май'); 6: writeln('июнь'); 7: writeln('июль'); 8: writeln('август'); 9: writeln('сентябрь'); 10: writeln('октябрь'); 11: writeln('ноябрь'); 12: writeln('декабрь'); end; case n of 1, 3, 5, 7, 8, 10, 12: writeln('31 день'); 4, 6, 9, 11: writeln('30 день'); 2: write('в невисокосном году 28, в високосном 29'); else writeln('нет такого месяца') end; end.
Теперь решим другим способом задачу решенную в самом начале Условие: по введенному 8 -мизначному числу определить является ли это датой (в формате дд. мм. гггг), если такой даты не существует сообщить на экран
var a, d, m, g, vis: integer; BEGIN read (a); d: =a div 1000000; m: =a mod 1000000; g: =m mod 10000; m: =m div 10000; vis: =g mod 4; case vis of 0 : if ((m=2) and (d<30)) then writeln(d, '. ', m, '. ', g) else writeln('error'); 1. . 3: case m of 1, 3, 5, 7, 8, 10, 12: if d<32 then writeln(d, '. ', m, '. ', g) else writeln('error'); 4, 6, 9, 11: if d<31 then writeln(d, '. ', m, '. ', g) else writeln('error'); 2: if d<29 then writeln(d, '. ', m, '. ', g) else writeln('error'); end; END.
Эти задачи решите сами: Дана точка (x; y) и круг радиуса R с центром в точке (0; 0). Определить, где находится точка: внутри, на границе, или за пределами круга. Составить программу, которая по номеру месяца, введенного с клавиатуры, выводит количество дней в нем. В программе учесть количество дней в феврале для високосного и не високосного годов. Даны два целых числа: D(день) и M(месяц), определяющую правильную дату. Вывести знак Зодиака, соответствующий этой дате: "Водолей(20, 1 -18, 2) "Рыбы"(19, 2 -20, 3) "Овен"(21, 3 -19, 4) "Телец" (20, 4 - 20, 5) "Близнецы" (21, 5 -21, 6) "Рак"(22, 6 -22, 7 ) "Лев" (23, 7 -22, 8) "Дева"(23, 8 -22, 9) "весы" (23, 9 -22, 10) "Скорпион"(23, 10, -22, 11) "стрелец"(23, 11 -21, 12) "козерог"(22, 12, -19, 1). По введенной дате выдать все данные разных гороскопов Китайский, Друидов …