program qq;
uses crt;
procedure NOD_NOK(n1,n2:integer;var a,b:integer);
var m:integer;
begin
if n1>n2 then m:=n1 else m:=n2;
a:=m-1;
repeat
a:=a+1
until ((a mod n1)=0) and ((a mod n2)=0);
while n1<>n2 do
if n1>n2 then n1:=n1-n2 else n2:=n2-n1;
b:=n1;
end;
var y,x,a,b:integer;
begin
repeat
writeln('Введите 2 натуральных числа:');
read(x,y);
until(x>0)and(y>0);
NOD_NOK(x,y,a,b);
writeln('NOD(',x,',',y,')=',b);
writeln('NOK(',x,',',y,')=',a);
end.
ответ:команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
Объяснение:
Объяснение:
Основная идея алгоритма прямым поиском заключается в посимвольном сравнении строки с подстрокой. В начальный момент происходит сравнение первого символа строки с первым символом подстроки, второго символа строки со вторым символом подстроки и т. д. Если произошло совпадение всех символов, то фиксируется факт нахождения подстроки. В противном случае производится сдвиг подстроки на одну позицию вправо и повторяется
посимвольное сравнение, то есть сравнивается второй символ строки с первым символом подстроки, третий символ строки со вторым символом подстроки и т. д. Символы, которые сравниваются, на рисунке выделены жирным. Рассматриваемые сдвиги подстроки повторяются до тех пор, пока конец подстроки не достиг конца строки или не произошло полное совпадение символов подстроки со строкой, то есть найдется подстрока.
Поделитесь своими знаниями, ответьте на вопрос:
Напишите процедуру, которая вычисляет наибольший общий делитель и наименьшее общее кратное двух натуральных чисел и возвращает их через изменяемые параметры только через процедуры!
// Внимание! Если программа не работает, обновите версию!
procedure NOD_NOK(a,b:integer; var NOD,NOK:integer);
begin
(var p,var q):=(a,b);
while q>0 do (p,q):=(q,p mod q);
NOD:=p; NOK:=a*b div NOD
end;
begin
var a,b,c,d:integer; Read(a,b);
NOD_NOK(a,b,c,d);
Writeln('НОД=',c,', НОК=',d)
end.
Пример
138 42
НОД=6, НОК=966