Задача 2 (повышенный уровень). Вычисление площади поверхности цилиндра Определить, сколько банок краски потребуется, чтобы окрасить поверхность бака цилиндрической формы. Покрасить надо и
снаружи, и изнутри.
Пользователь вводит диаметр и высоту бака, а также какую площадь можно окрасить одной банкой краски.
Чтобы узнать количество требуемых банок краски, надо разделить окрашиваемую площадь на площадь, окрашиваемую одной
банкой.
Площадь бака представляет собой сумму площадей двух кругов (крышки и дна бака) и площади самой цилиндрической
поверхности. Кроме того, если бак также красится изнутри, найденную площадь следует умножить на 2.
Рекомендации:
Площадь круга через диаметр равна рi *d2/4
Площадь цилиндра: pixd: h, где d иһ- диаметр и высота цилиндра.
В n будем хранить количество чисел, которые ещё нужно вывести. a и b - предыдущее и текущее числа Фибоначчи. По определению, следующее число Фибоначчи равно сумме двух предыдущих, так что новое значение b будет a + b. Чтобы не заводить новую временную переменную, новое значение a можно будет найти, вычитая из нового b старое a, получится (a + b) - a = b.
Код процедуры:
procedure print_fib(n: integer);
var a, b, t: integer;
begin
a := 0;
b := 1;
while n > 0 do
begin
write(b, ' ');
b := a + b;
a := b - a;
n := n - 1;
end;
end;
Пример основной программы:
begin
print_fib(10)
end.
Вывод:
1 1 2 3 5 8 13 21 34 55
Программа:
program z;
var k,s,x:integer;
begin
k:=0; {начальное значение количества двузначных чисел}
s:=0; {начальное значение суммы двузначных чисел}
while True do {открываем бесконечный цикл}
begin
readln(x); {вводим число х}
if x=0 then break; {если введенное число равно 0, то остановить цикл}
if (x>9)and(x<100) then {если число двузначное, т.е. от 10 до 99}
begin
k:=k+1; {количество увеличиваем на 1}
s:=s+x; {увеличиваем предыдущее значение суммы на число х}
end;
end;
if k=0 then writeln('NO') {если двузначных чисел не было, то вывод NO}
else writeln(s/k); {иначе вывод ср.арифметического}
end.