
Итак, с сегодняшнего дня мы начинаем вести новую рубрику: «Решение задач», в которой будем рассматривать задачи, взятые из сборника М.Э.Абрамяна «1000 ЗАДАЧ ПО ПРОГРАММИРОВАНИЮ».
Перейти на сайт с текстами задач
Открыв задачник и прочитав аннотацию, Вы, скорее всего, озадачитесь тем, что данное пособие предназначено для студентов механико-математического, физического и экономического факультетов, но смею Вас заверить, что это весьма универсальная книга, которая подходит как студентам, так и школьникам. Возможно, задачи из первых разделов книги покажутся Вам простыми — в этом случае используйте наш разбор только для проверки своих решений; но если же по каким-либо причинам решить задачи Вы не в состоянии, то тогда присоединяйтесь к нам.
Begin1. Дана сторона квадрата a. Найти его периметр P = 4·a.
Прежде всего напомню, что для ввода и вывода информации, в Паскале используют следующие операторы:
- Read (Readln) — ввод значений с клавиатуры;
- Write (Writeln) — вывод результата (и вообще чего-либо) на экран.

Таким образом, решение задачи становится очевидным.
program Begin1;
var
a, P: real;
begin
write('Введите a:');
readln(a);
P := 4 * a;
write('P=', p);
end.Begin2. Дана сторона квадрата a. Найти его площадь S = a2.
При решении данной задачи воспользуемся функцией sqr. Можно, конечно, вычислять квадрат, умножая число само на себя (S=a*a), но при вводе действительно больших чисел наша программа будет выполняться гораздо дольше, нежели при использовании sqr.

program Begin2;
var
a, s: real;
begin
write('Введите a: ');
readln(a);
s := sqr(a);
write('Площадь квадрата -- ', s);
end.Begin3°. Даны стороны прямоугольника a и b. Найти его площадь S = a·b и периметр P = 2·(a + b).
Да, задача по сути своей проста и подобна предыдущим, поэтому поскорее составим к ней решение и перейдем к следующей.

program Begin3;
var
a, b, S, P: real;
begin
write('Введите a: ');
readln(a);
write('Введите b: ');
readln(b);
s := a * b;
p := 2 * (a + b);
write('Площадь прямоугольника -- ', s, '; Периметр прямоугольника -- ', p);
end.Begin4. Дан диаметр окружности d. Найти ее длину L = π·d. В качестве значения π использовать 3.14.
У вас, наверняка, возникает вопрос π — это константа или переменая? Так как π не изменяется в течение программы, π — константа. Вообще в Паскале уже встроена такая константа, но ее значение:
Pi = 3.14159265358979.
А так как в условии задачи указано, что в качестве значения π нужно использовать 3.14, то следует объявить π в разделе описания констант.

program Begin4;
const
pi = 3.14;
var
d, L: real;
begin
write('Введите диаметр окружности : ');
readln(d);
L := pi * d;
write('Длина окружности -- ', L);
end.Begin5. Дана длина ребра куба a. Найти объем куба V = a3 и площадь его поверхности S = 6·a2.
Для решения задачи используем функцию power(x, a), где a — степень, x — число возводимое в степень (разумеется, использовать ее мы будем только для возведения числа в третью степень, квадрат числа по-прежнему находим с помощью sqr(x) ).

program Begin5;
var
v, a, s: real;
begin
write('Введите значение a: ');
readln(a);
v := power(a, 3);
s := 6 * sqr(a);
writeln('Объем куба -- ', v);
writeln('Площадь поверхности куба -- ', s);
end.Begin6.Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

program Begin6;
var
v, a, b, c, s: real;
begin
write('Введите значения a, b, c: ');
readln(a, b, c);
v := a * b * c;
s := 2 * (a * b + b * c + a * c);
writeln('Объем параллелепипеда -- ', v);
writeln('Площадь поверхности параллелепипеда -- ', s);
end.Begin7°. Найти длину окружности L и площадь круга S заданного радиуса R:
L = 2·π·R, S = π·R2.
В качестве значения π использовать 3.14.

program Begin7;
const
pi = 3.14;
var
l, s, r: real;
begin
write('Введите значение R: ');
readln(r);
l := 2 * pi * r;
s := pi * sqr(r);
writeln('Длина окружности -- ', l);
writeln('Площадь окружности -- ', s);
end.Begin8. Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.

program Begin8;
var
srednee, a, b: real;
begin
write('Введите значения a и b: ');
readln(a, b);
srednee := (a + b) / 2;
writeln('Среднее арифметическое -- ', srednee);
end.Begin9. Даны два неотрицательных числа a и b. Найти их среднее геометрическое, то есть квадратный корень из их произведения: √(a*b).
Напомню, что для нахождения квадратного корня мы используем функцию sqrt.

program Begin9;
var
a, b, srednee: real;
begin
write('Введите значения a и b: ');
readln(a, b);
srednee := sqrt(a * b);
writeln('Среднее геометрическое -- ', srednee);
end.Begin10. Даны два ненулевых числа. Найти сумму, разность, произведение и частное их квадратов.

program Begin10;
var
a, b, summ, razn, proizv, chast: real;
begin
write('Введите значения a и b: ');
readln(a, b);
a := sqr(a); {квадрат первого числа}
b := sqr(b); {квадрат второго числа}
summ := a + b; {сумма квадратов}
razn := a - b; {разность квадратов}
proizv := a * b; {произведение квадратов}
chast := a / b; {частное квадратов}
writeln('Сумма квадратов -- ', summ);
writeln('Разность квадратов -- ', razn);
writeln('Произведение квадратов -- ', proizv);
writeln('Частное квадратов -- ', chast);
end.Ну вот и все. Следующая публикация с решением задач выйдет в ближайшие дни.
Всем удачи и веселого Нового года:)
Хочу сказать большое спасибо автору. Но здесь есть ошибка. Тут написано правильно площадь его поверхности S = 6·a2. . А в коде s := sqr(a);. Нужно исправить на s:=6*sqr(a);
спасибо, что нашли ошибку. очень приятно иметь внимательных читателей.
Супер сайт. Объясняете понятнее чем в школе.
Cпасибо , ясно доходчиво и понятно!
Какая версия pascal используется в уроках? turbo pascal, object pascal или free pascal?
PascalABC.net
Или просто Pascal ABC. Редко это существенно
Прошу прощения. В пятом задании нужно найти площадь поверхности куба. В решении есть такая строка:
writeln(‘Плошадь ребра куба — ‘, s);
во-первых, не плоШадь, а плоЩадь, но это не существенно (и да, я придираюсь), во-вторых, площадь. ребра. куба. Ребро — отрезок. Уж лучше написать «Площадь поверхности куба».
Спасибо. Исправлено 🙂
Спасибо вам огромноеееее!!!!!!!
В 10 задании по условию указано что даны два ненулевых числа. В представленном решении же, переменные ‘a’ и ‘b’ имеют тип real, и могут быть отрицательными. Правильным будет, использовать в решении модули числе ‘a’ и ‘b’.
А не, нихуя, всё в норме. Молодцы.
Здравствуйте,я отдала сына на программирование.Им дали такие же задания как здесь,но они решила по другому, Python.
Вот что я к заданию begin 10 придумал:
var a,b,c,d,i,f:real;
begin
read(a);
read(b);
c:=sqr(a)+sqr(b);
d:=sqr(a)-sqr(b);
i:=sqr(a)*sqr(b);
f:=sqr(a)/sqr(b);
writeln(c,’сумма’);
writeln(d,’разность’);
writeln(i,’произведение’);
writeln(f,’деление’);
end.