Решение задач. День первый. Задачи Begin1-10


begin1-10

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

Ну вот и все. Следующая публикация с решением задач выйдет в ближайшие дни.

Всем удачи и веселого Нового года:)

  1. Хочу сказать большое спасибо автору. Но здесь есть ошибка. Тут написано правильно площадь его поверхности S = 6·a2. . А в коде s := sqr(a);. Нужно исправить на s:=6*sqr(a);

  2. спасибо, что нашли ошибку. очень приятно иметь внимательных читателей.

  3. Прошу прощения. В пятом задании нужно найти площадь поверхности куба. В решении есть такая строка:
    writeln(‘Плошадь ребра куба — ‘, s);
    во-первых, не плоШадь, а плоЩадь, но это не существенно (и да, я придираюсь), во-вторых, площадь. ребра. куба. Ребро — отрезок. Уж лучше написать «Площадь поверхности куба».

  4. В 10 задании по условию указано что даны два ненулевых числа. В представленном решении же, переменные ‘a’ и ‘b’ имеют тип real, и могут быть отрицательными. Правильным будет, использовать в решении модули числе ‘a’ и ‘b’.

    1. Здравствуйте,я отдала сына на программирование.Им дали такие же задания как здесь,но они решила по другому, Python.

  5. Вот что я к заданию 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *