Итак, с сегодняшнего дня мы начинаем вести новую рубрику: «Решение задач», в которой будем рассматривать задачи, взятые из сборника М.Э.Абрамяна «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.