Мітки та переходи, Детальна інформація
Мітки та переходи
Замість рядка з коментарем {Увага 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;
{введення закінчено або перетин порожній}
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
© Referats, Inc · All rights reserved 2021