Мітки та переходи, Детальна інформація

Мітки та переходи
Тип документу: Реферат
Сторінок: 8
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 13.8
Скачувань: 1078
Замість рядка з коментарем {Увага 2!}, що задає ділення, помістимо оператор:

if second<>0 then first:=first/second

else begin

writeln('-----Спроба ділення на 0: ігнорована-----');

writeln('Задайте знак операції (1, 2, 3, 4) : ');

continue

end;

Проте навіть із доповненнями програма "не захищена" від набирания символів, що не утворюють числову сталу. Для такого захисту потрібні засоби, які ми почнемо розглядати в розд. 14.\xF0E7

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

Приклад 4. Відрізок [a; b] прямої задається координатами його кінців, тобто парою чисел a, b, де a\xF0A3 b. Перетином двох відрізків є або відрізок, або порожня множина точок, наприклад, [1;3]\xF0C7 [2;4]=[2;3], [1;2]\xF0C7 [3;4]=\xF0C6 , [1;2]\xF0C7 [2;3]=[2;2].

Треба прочитати послідовність пар чисел, що задають відрізки, і знайти їх перетин.

Припустимо, кінець послідовності відрізків задається за допомогою "Ctrl-Z". Проте немає сенсу продовжувати читання відрізків після того, як перетин уже прочитаних став порожнім. У цьому випадку треба відразу видати відповідь і закінчити виконання програми. Припустимо, що можливо "неправильне" задання відрізків у вигляді пари чисел a, b, де a>b. У цьому випадку b і a міняються місцями.

Для збереження поточного перетину означимо змінні lb і hb (скорочення від "low bound" і "high bound" – нижня й верхня межа). Cпочатку відрізків немає, і перетин порожній – виразимо це ініціалізацією lb=1, hb=0, тобто відрізком з неможливими межами. Перший відрізок має стати значенням [lb;hb]. Потім у циклі вводяться інші відрізки та обчислюється перетин:

lb=1; hb=0;

writeln('задайте дійсні кінці відрізка:'); readln(a, b);

if a>b then

begin lb := b; hb := a end

else begin lb:=a; hb:=b end

{прочитано перший відрізок}

{далі читаються інші та обчислюється їх перетин}

while not eof do

begin

writeln('задайте дійсні кінці відрізка:'); readln(a, b);

if a>b then

begin t:=a; a:=b; b:=t end;

if a>lb then lb:=a;

if b
if lb>hb then break

end;

{введення закінчено або перетин порожній}

The online video editor trusted by teams to make professional video in minutes