Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
66 скороч уроків Від алгоритмів до Турбо Паска...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.35 Mб
Скачать
  1. Закінчити програму.

Отже, маємо програму:

Program Problem; uses WinCrt; var

n,m,k,a,p,s: integer;

Flag: boolean;

begin

write ('Уведіть натуральне число, до якого ');

write('виводити шукані числа );

readln(n);

writeln('Уведіть число, з яким порівнюєте квадрат');

write('його суми цифр. Воно має бути точн. квадрат. ');

readln(m);

write('Шукані числа: ') ;

k:= 1; Flag:=False;

while к <= n do

begin

s: = 0; a: = к;

while к <> 0 do

begin

p:= к mod 10; s: = s + p; k:= к div 10 end;

if sqr(s) = m then begin

write(a, ' ') ;

Flag:=True; end;

к := a +1

end

if NOT Flag

then writeIn('Таких чисел для заданих вхідних даних не існує')

end.

У програмі два цикли. Один — зовнішній, для натуральних чисел, другий — внутрішній, для підрахунку суми цифр числа.

Зверніть увагу, що у випадку некоректних вхідних даних (n — дуже мале, або т — не є точним квадратом числа) програма не може видати результат. Щоб запобігти цьому, про­поную використання змінної логічного типу Flag. Для цієї задачі міркування можуть бути такими: на початку програми змінній Flag надається значення Fals e (числа ще не знайдені). Все­редині циклу якщо знайдеться хоч одне чис­ло, що задовольняє умову, разом з виведен­ням його на екран змінній Flag присвоюєть­ся значення True. Таким чином, якщо змінна Flag після виконання програми не змінить­ся, це свідчить про те, що необхідні числа не знайдені. В цьому випадку слід видати про це повідомлення.

5. Практичне завдання

Скласти програму пошуку всіх натуральних чисел n 100 000, сума цифр яких дорівнює заданому натуральному числу а.

Program Task;

uses WinCrt;

var a,p,s : integer; n,b: longint;

begin

write('Уведіть натуральне число ‘) ;

readln(a);

if a>45 then writeln ('Таких чисел не існує')

else begin

b:= 1;

writeln('Натуральні числа, сума цифр ‘);

write('яких дорівнює числу ', а, ' наступні: ');

while b < 100000 do

begin

s := 0; n := b;

while n <> 0 do

begin

p:= n mod 10; s:= s +p; n:= n div 10 end;

if s = a then write(b, ‘, ') ;

b := b +1

end;

end;

end.

Урок 54. Випадки застосування циклів з післяумовою.

Основні відмінності циклу з післяумовою від циклу while.

  1. Коли умова стає ІСТИННОЮ, виконання циклу repeat until припиняється, а виконання циклу while триватиме.

  2. Для циклу while на початку перевіряєть­ся умова, і тільки потім виконується дія. Для циклу repeat until виконується дія, і тільки потім перевіряється умова. Тому тіло циклу repeat until хоча б один раз виконається до перевірки умови.

  3. Для циклу repeat until не потрібно операторних дужок.

Відмінності між циклом while і циклом repeat:

1. Оператори, що знаходяться в циклі while, повторюються доти, доки умова істинна. Послідовність операторів, що знаходяться в циклі repeat, повторюється доти, доки умова хибна.

Отже, у циклі while використовується умова продовження циклу, а в циклі repeat — умова закінчення циклу.

  1. У циклі while повторюється один оператор (кілька операторів треба поєднувати в складений опе­ратор за допомогою операторних дужок begin... end), а в циклі repeat можна використовувати кілька операторів без операторних дужок.

  2. У циклі while спочатку перевіряється умова, а після цього залежно від значення умови (якщо істинна) оператор чи група операторів після слова do.

  3. У циклі repeat послідовність операторів виконується один раз, а після цього перевіряється умова, тобто ця послідовність завжди виконується хоча б один раз, а в циклі while оператори, що складають тіло циклу, можуть узагалі не виконува­тися жодного разу (у випадку, якщо умова відразу хибна).