Вычисление площади поверхности цилиндра

Задача: 

Допустим, организации часто требуется красить баки цилиндрической формы. При этом они красят только верхнюю часть и стенки с внешней стороны.

Организации требуется программа, которая бы определяла, сколько банок краски необходимо для покраски того или иного бака.

Алгоритм решения задачи: 

Программа должна запрашивать у пользователя следующую информацию:

  • диаметр бака;
  • высота бака;
  • расход краски (площадь поверхности, которую можно покрасить одной банкой краски).

В результате программа должна выдавать количество требуемых банок. При получении дробного числа округление должно всегда происходить в большую сторону.

Площадь крыши бака (круга) вычисляется по формуле p * d2 /4 (где p – число пи, d - диаметр).
Площадь боковой поверхности цилиндра: p * d * h (где h – высота).

Программа на языке Паскаль: 

const pi = 3.14;
 
var
    d, h, b: real;
    top, wall, q: real;
    q_int: integer;
 
begin
    write('Диаметр: ');
    readln(d);
    write('Высота: ');
    readln(h);
    write('Окрашиваемая площадь одной банкой: ');
    readln(b);
 
    top := pi * sqr(d) / 4.0;
    wall := pi * d * h;
    q := (top + wall) / b;
    q_int := trunc(q) + 1;
 
    write('Количество банок: ', q_int);
 
readln
end.

Примечания: 

Стандартная функция trunc выполняет "отбрасывание" дробной части и возвращает целое число.

Комментарии

 

Если у вас в программе q получится в итоге целым числом, то тогда количество банок будет равно q, а у вас в программе оно бы равнялось q+1, что является ошибкой.

поправьте меня если это не

поправьте меня если это не так
но помоему нужно считать крышку и дно
те q := (2*top + wall) / b;

там же написано только крышку

там же написано только крышку

Помогите исправить ошибку

Задача:Компьютер спрашивает названия двух планет, радиусы их орбит (в миллионах километров) и скорости движения по орбите (в миллионах километров в сутки). Компьютер вычисляет продолжительность года на планетах и выдает результат в таком виде: Продолжительность года на планете Земля – 365 суток, а на планете Эоэлла – 12 суток.
Написал прогу:

Uses crt;
var R1,V1,R2,V2:longint;
Pi,T1,T2:real;
a,b:string;
begin clrscr;
writeln('vvedite nazvanie 1-oi planeti');
readln(a);
writeln('vvedite r planeti ',a);
readln(R1);
writeln('vvedite V planeti ',a);
readln(V1);
T1:=2*Pi*R1/V1
writeln('vvedite nazvanie 2-oi planeti');
readln(b);
writeln('vvedite r planeti ',b);
readln(R2);
writeln('vvedite V planeti ',b);
readln(V2);
T2:=2*Pi*R2/V2
writeln('god planeti ',a,'=',T1 :10:4);
writeln('god planeti ',b,'=',T2 :10:4);
readln;
end.

в ответе при любых значениях выдаёт
год планеты 'a'(тут вместо а введённое название) =0.0000
год планеты 'b'(тоже название планеты выводит) =0.0000

в чём ошибка?

У вас значение Pi не

У вас значение Pi не определено, т.е. в выражении 2*Pi*R2/V1 вы умножаете на 0, поэтому результат 0.

PI - встроенная константа. Ее не надо писать в разделе var. Когда вы там ее пишете, то объявляете переменную, которая "перекрывает" встроенную константу.