Среда Turbo Pascal 5 Разделы описаний 6 решение

Вид материалаРешение

Содержание


Решение типовых задач
Реализация линейных алгоритмов
Реализация разветвляющихся алгоритмов
Подобный материал:
1   2   3   4

Решение типовых задач


Настоящий раздел призван показать основные практические методы и приемы разработки программ для решения наиболее часто встречающихся задач.

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

Реализация линейных алгоритмов


Линейными называют алгоритмы, в которых последовательность операторов совпадает с порядком их записи и не зависит от конкретных значений исходных данных.

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

Пример. Написать программу вычисления объема цилиндра.

Var r,h,v: real; {радиус -основания, высота и объем цилиндра }

begin

writeln('Вычисление объема цилиндра');

write('радиус основания (см) > '); readln(r);

write('высота цилиндра (см) > '); readln(h);

v := 2*Pi*r*r*h;

writeln('Объем цилиндра ',v:6:2,' см.куб.');

readln;

end.


ЗАДАЧИ

Составьте программы для вычисления требуемых величин по известным данным, используя линейную структуру:
  1. Вычислите площадь, периметр и диагональ прямоугольника, если даны его стороны.
  2. Вычислите длину окружности и площадь круга по данному радиусу.
  3. Вычислите расстояние между точками A(x1,y1), В(х2,у2).
  4. Вычислите координаты середины отрезка, если даны координаты концов отрезка.
  5. По двум данным числам А и В вычислите сумму, разность и произведение этих чисел.
  6. Вычислите остаток от деления числа А на число В.
  7. Вычислите сумму цифр трехзначного натурального числа (см. сноску 1).
  8. Дано трехзначное число. Найдите число, записанное теми же цифрами, но в обратном порядке.
  9. Вычислите Р% от данного числа А.
  10. Вычислите число А, если его часть В составляет С%.
  11. Дано действительное число x. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить: 2x4 - 3x3 + 4x2 – 5x + 6. Разрешается использовать не более четырех умножений и четырех сложений и вычитаний (см. сноску 2).
  12. Дано действительное число x. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить: 1—2x+3x2 – 4x3 и 1+2х+3x2 + 4x3. Разрешается использовать не более восьми операций (см. сноску 3).

Реализация разветвляющихся алгоритмов


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

Уже не является линейным, т.к. в нем должна быть заложена операция выбора одной из формул в зависимости от заданного значения аргумента X. Такого рода алгоритмы называются разветвляющимися или развилкой.

Итак, разветвляющимися называются программы, в которых последовательность выполнения операторов определяется выполнением (или невыполнением) определенных условий.

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

var

a,b: integer; { сравниваемые числа }

begin

write('Введите числа ->'); readln (a, b);

if a = b

then writeln('числа равны')

else if a < b

then writeln(a,' меньше ',b)

else writeln(a,' больше ',b);

readln;

end.

Пример 2. Написать программу, которая проверяет, делится ли на три целое число, введенное с клавиатуры.

var

n: integer; {введенное пользователем число}

begin

write(' Введите число ->'); readln (n);

write('Число ',n);

if n mod 3 = 0 then writeln(' нацело на три делится')

else writeln(' нацело на три не делится');

readln;

end.

Пример 3. Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае если пользователь укажет недопустимое число, программа должна вывести сообщение "Ошибка ввода данных".

var

month: integer; { номер месяца }

begin

write('Введите номер месяца ->'); readln(month);

case month of

1,2,12 : writeln('Зима');

3..5 : writeln('Весна');

6..8 : writeln('Лето');

9..11 : writeln('Осень');

else writeln('Число должно быть от 1 до 12');

end;

readln;

end.


ЗАДАЧИ

Составьте программы, используя структуру ветвления:
  1. Даны два числа. Определите наибольшее из них.
  2. Даны три числа. Определите наименьшее из них.
  3. Даны два числа. Меньшее из них замените суммой, а большее произведением этих чисел.
  4. Из двух данных чисел отрицательное замените удвоенным произведением этих чисел, а положительное - их полусуммой.
  5. Из двух данных чисел отрицательное замените его модулем, а положительное - произведением этих чисел.
  6. Определите, является ли данное число четным или нечетным.
  7. Определите, является ли число D делителем числа А.
  8. Даны три числа. Расположите их в порядке возрастания.
  9. Определите принадлежность числа Х промежутку (-4;2).
  10. Определите, является ли данное число целым или дробным.
  11. Определите, существует ли треугольник со сторонами а,b,с.
  12. Лежит ли точка А(х,у) на окружности с центром C(0;0) и радиусом R.
  13. Составьте программу решения линейного уравнения.
  14. Составьте программу решения квадратного уравнения.
  15. Дано натуральное число n (n > 99). Определить число сотен в нем.
  16. Дано натуральное число n (100n9999).
    а) Сколько цифр в числе n?
    б) Чему равна сумма его цифр?
    в) Найти последнюю цифру числа п.
    г) Найти первую цифру числа п.
  17. Часовая стрелка образует угол у с лучом, проходящим через центр и через точку, соответствующую 12 часам на циферблате, 0 < φ ≤ 2π. Определить значение угла для минутной стрелки, а также количество часов и полных минут.
  18. Даны целые числа m, n (0 < m ≤ 12, 0 ≤ n < 60), указывающие момент времени: «m часов, n минут». Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате а) совпадут; б) расположатся перпендикулярно друг к другу.