Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Максимова алгоритмизация.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.17 Mб
Скачать

Тема 7 «Разветвляющая структура программы»

Цель: Познакомиться с программами разветвляющей структуры.

Вопросы к допуску и защите:

  1. Понятие структуры программы.

  2. Виды структур.

  3. Разветвляющая структура программы.

  4. Оператор условного перехода IF …THEN .

  5. Оператор выбора CASE.

Примеры решения задач

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

Решение

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

Например, для числа 342. Выполним целочисленное деление числа на 100, получим цифру сотен:

342 div 100 = 3;

вычитаем из 342 сотни 3*100 и результат делим на 10 - получим цифру десятков:

(342 - 3*100) div 10 = 4;

наконец, вычитаем из заданного числа сотни и десятки, получаем цифру единиц:

342 - 3*100 - 4*10 = 2.

Для записи числа в обратном порядке, умножаем цифру единиц 2 на 100 и складываем с цифрой десятков, умноженных на 10 (4*10) и прибавляем цифру сотен 3. Получим новое число, записанное теми же цифрами, но в обратном порядке:

2 100 + 4 10 + 3 = 243.

Вычитаем: 342 - 243 = 99.

Program Problem1;

uses Crt;

var

a, s, d, e, b, r : integer;

begin

write('Введите трехзначное число ');

readln(a);

s := a div 100;

d := (a - s*100) div 10;

e := a - s*100 - d*10;

b := e*100 + d*10 + s;

r := a - b;

writeln('Искомая разность равна ', r)

end.

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

Решение

Program Problem2; {Программа удвоения меньшего из двух чисел}

uses Crt;

var

a, b, c : integer;

begin

write('Введите первое число '); readln(a);

write('Введите второе число '); readln(b);

if a = b then writeln('Числа равны')

else

begin

if a < b then c := 2*a

else c := 2*b;

writeln('Меньшее число ', c div 2);

writeln('Удвоенное меньшее число ', c)

end

end.

Задача 3. Составить программу решения квадратного уравнения

ax2 + bx + c = 0.

Решение

Алгоритм

1. Начало.

Описание переменных и их типов.

2. Ввод значений коэффициентов.

3. Вычисление значения дискриминанта (d).

Если d < 0, тогда уравнение не имеет корней,

иначе,

если d = 0,

тогда уравнение имеет один корень,

вычислить значение этого корня и выдать его на экран,

иначе, уравнение имеет два корня,

вычислить их и выдать на экран.

4. Конец.

Program Problem3; { Программа решения квадратного уравнения }

uses Crt;

var

a, b, c, d, x1, x2 : real;

begin

write('Введите коэффициенты уравнения ');

readln(a, b, c);

d := b*b - 4*a*c;

if d < 0 then writeln('Уравнение не имеет корней')

else

if d=0

then

writeln('Уравнение имеет один корень ',-b/(2*a))

else

begin

x1 := (-b - sqrt(d))/(2*a);

x2 := (-b + sqrt(d))/(2*a);

write('Уравнение имеет два различных корня ');

writeln('x1 = ', x1, ' x2 = ', x2)

end

end.

Задача 4. Два прямоугольника заданы длинами сторон. Написать программу, после выполнения которой выясняется, можно ли первый прямоугольник целиком разместить во втором. (Рассмотреть только случай, когда соответствующие стороны прямоугольников параллельны.)

Решение

Program Problem4;

uses Crt;

var

a1, b1, a2, b2 : real;

begin

write('Введите длину и ширину первого прямоугольника ');

readln(a1, b1);

write('Введите длину и ширину второго прямоугольника ');

readln(a2, b2);

if ((a1 < a2) and (b1 < b2)) or ((b1 < a2) and (a1 < b2))

then writeln('Первый прямоугольник размещается во втором')

else writeln('Первый прямоугольник не размещается во втором')

end.

Задача 5. Найти большее из двух введенных чисел

Решение

Program Task2_2;{Определение большего из двух чисел}

uses Crt;

var

a, b, c : integer;

begin

write('Введите первое число '); readln(a);

write('Введите второе число '); readln(b);

if a = b then writeln('Числа равны')

else if a > b then writeln('Большее число ', a)

else writeln('Большее число ', b)

end.

Задача 6. Определить модуль введенного числа

Решение

Program Task2_3;{Определение модуля числа}

uses Crt;

var

a : integer;

begin

write('Введите целое число '); readln(a);

if a >= 0 then writeln('Модуль числа ', a, ' равен ', a)

else writeln('Модуль числа ', a, ' равен ', -a)

end.