Решение задач блока Case 1-10
Решение задач из задачника по программированию М. Э. Абрамяна. Задачи из блока Case: «Оператор выбора».
Задача Case1
Дано целое число в диапазоне 1–7. Вывести строку — название дня недели, соответствующее данному числу (1 — «понедельник», 2 — «вторник» и т. д.).

uses PT4;
var
day:integer;
begin
Task('Case1');
Read(day);
case day of
1:Write('понедельник');
2:Write('вторник');
3:Write('среда');
4:Write('четверг');
5:Write('пятница');
6:Write('суббота');
7:Write('воскресенье');
end;
end.
PascalЗадача Case2
Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка».

uses PT4;
var
x:integer;
begin
Task('Case2');
Read(x);
case x of
1:Write('плохо');
2:Write('неудовлетворительно');
3:Write('удовлетворительно');
4:Write('хорошо');
5:Write('отлично');
else Write('ошибка');
end;
end.
PascalЗадача Case3
Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Вывести название соответствующего времени года («зима», «весна», «лето», «осень»).

uses PT4;
var
month:integer;
begin
Task('Case3');
Read(month);
case month of
1,2,12:Write('зима');
3..5:Write('весна');
6..8:Write('лето');
9..11:Write('осень');
end;
end.
PascalЗадача Case4
Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Определить количество дней в этом месяце для невисокосного года.

uses PT4;
var
month:integer;
begin
Task('Case4');
Read(month);
case month of
1:Write(31);
2:Write(28);
3:Write(31);
4:Write(30);
5:Write(31);
6:Write(30);
7:Write(31);
8:Write(31);
9:Write(30);
10:Write(31);
11:Write(30);
12:Write(31);
end;
end.
PascalЗадача Case5
Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия N (целое число в диапазоне 1–4) и вещественные числа A и B (B не равно 0). Выполнить над числами указанное действие и вывести результат.

uses PT4;
var
n:integer;
a,b:real;
begin
Task('Case5');
Read(n);
Read(a,b);
case n of
1:Write(a+b);
2:Write(a-b);
3:Write(a*b);
4:Write(a/b);
end;
end.
PascalЗадача Case6
Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

uses PT4;
var
n:integer;
x:real;
begin
Task('Case6');
Read(n);
Read(x);
case n of
1:Write(x/10);
2:Write(x*1000);
3:Write(x);
4:Write(x/1000);
5:Write(x/100);
end;
end.
PascalЗадача Case7
Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.

uses PT4;
var
n:integer;
x:real;
begin
Task('Case7');
Read(n);
Read(x);
case n of
1:Write(x);
2:Write(x/1000000);
3:Write(x/1000);
4:Write(x*1000);
5:Write(x*100);
end;
end.
PascalЗадача Case8
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной.

uses PT4;
var
d,m:integer;
begin
Task('Case8');
Read(d,m);
if d=1 then
case m of
1:Write(31,12);
2:Write(31,1);
3:Write(28,2);
4:Write(31,3);
5:Write(30,4);
6:Write(31,5);
7:Write(30,6);
8:Write(31,7);
9:Write(31,8);
10:Write(30,9);
11:Write(31,10);
12:Write(30,11);
end
else
Write(d-1,m);
end.
Pascaluses PT4;
var
d,m:integer;
begin
Task('Case8');
Read(d,m);
case m of
2,4,6,8,9,11:if d=1 then Write(31,m-1)
else Write(d-1,m);
5,7,10,12:if d=1 then Write(30,m-1)
else Write(d-1,m);
3:if d=1 then Write(28,m-1)
else Write(d-1,m);
1:if d=1 then Write(31,12)
else Write(d-1,m);
end;
end.
PascalЗадача Case9
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.

uses PT4;
var
d,m:integer;
begin
Task('Case9');
Read(d,m);
case m of
4,6,9,11: if d=30 then Write(1,m+1)
else Write(d+1,m);
1,3,5,7,8,10:if d=31 then Write(1,m+1)
else Write(d+1,m);
2: if d=28 then Write(1,m+1)
else Write(d+1,m);
12: if d=31 then Write(1,1)
else Write(d+1,m);
end;
end.
Pascaluses PT4;
var
d,m:integer;
begin
Task('Case9');
Read(d,m);
if d=31 then
case m of
1:Write(1,m+1);
3:Write(1,m+1);
5:Write(1,m+1);
7:Write(1,m+1);
8:Write(1,m+1);
10:Write(1,m+1);
12:Write(1,1)
end
else if d=30 then
case m of
4:Write(1,m+1);
6:Write(1,m+1);
9:Write(1,m+1);
11:Write(1,m+1);
else Write(d+1,m);
end
else if (d=28) and (m=2) then Write(1,m+1)
else Write(d+1,m);
end.
PascalЗадача Case10
Робот может перемещаться в четырех направлениях («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, −1 — поворот направо. Дан символ C — исходное направление робота и целое число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.

uses PT4;
var
way:char;
n:integer;
begin
Task('Case10');
Read(way);
Read(n);
case way of
'С': case n of
1:Write('З');
-1:Write('В');
else Write(way);
end;
'В': case n of
1:Write('С');
-1:Write('Ю');
else Write(way);
end;
'Ю': case n of
1:Write('В');
-1:Write('З');
else Write(way);
end;
'З': case n of
1:Write('Ю');
-1:Write('С');
else Write(way);
end;
end;
end.
Pascaluses PT4;
var
way:char;
n:integer;
begin
Task('Case10');
Read(way);
Read(n);
case way of
'С': if n=1 then Write('З')
else
if n=-1 then Write('В')
else Write(way);
'В': if n=1 then Write('С')
else
if n=-1 then Write('Ю')
else Write(way);
'Ю': if n=1 then Write('В')
else
if n=-1 then Write('З')
else Write(way);
'З': if n=1 then Write('Ю')
else
if n=-1 then Write('С')
else Write(way);
end;
end.
Pascaluses PT4;
var
way:char;
n:integer;
begin
Task('Case10');
Read(way);
Read(n);
case n of
-1: case way of
'С':Write('В');
'В':Write('Ю');
'Ю':Write('З');
'З':Write('С');
end;
1: case way of
'С':Write('З');
'В':Write('С');
'Ю':Write('В');
'З':Write('Ю');
end;
else Write(way);
end;
end.
Pascal