Алгоритм Евклида

End.

Begin

Begin

Var

End.

Begin

Begin

Var

End.

Begin

Begin

Var

ВСТАВКА

End.

Repeat

Begin

Var

End.

Begin

Begin

Var

N, bonus, R: integer;

bonus:=10;

Randomize;

R := Random(11);

WriteLn ('Задумано целое число от 0 до 10. Угадайте!');

WriteLn ('Введите целое число от 0 до10');

ReadLn(N );

 

while N <> R do

bonus := bonus - 1;

WriteLn (' Вы не угадали‘);

IF N < R

then WriteLn (' Ваше число меньше задуманного‘)

else WriteLn (' Ваше число больше задуманного‘);

WriteLn (' Попытайтесь ещё раз!‘);

ReadLn(N );

end;

WriteLn ('Поздравляю! Вы угадали и набрали ‘,bonus,’очков’); ReadLn;

Замечания:

Randomize – это начальная установка специальной процедуры – «генератора случайных чисел» Random(n),выдающей случайные числа от 0 до n-1.

 

 

Пример2.Банк (ав.Немнюгин, стр.96)

Пусть некто, обладая определённой денежной суммой, открыл счёт в банке под определённый ежегодный процент от вклада. Считается, что этот процент не зависит от времени и от величины вклада.

Необходимо написать программу, которая рассчитывает величину вклада и выводит эту величину для каждого года до тех пор, пока величина вклада не удвоится.

Алгоритм:

  • ввести первоначальную величину вклада, процентную ставку и год помещения денег в банк;
  • рассчитать новую величину вклада;
  • вывести год и величину вклада в этом году;
  • повторять шаги 2 и 3 до тех пор, пока величина вклада не удвоится;

 

Program bank;

god, wklad, rate, wklad_tek: real;

WriteLn ('Введите год помещения денег в банк');

ReadLn(god );

WriteLn ('Введите величину вклада’);

ReadLn(wklad );

WriteLn ('Введите процентную ставку (0.0-1.0)');

ReadLn(rate );

 

wklad_nach := wklad;

WriteLn ('Год Вклад');

WriteLn ('___________');

 

pri:=rate * pri;

wklad := wklad +pri;

god := god +1;

WriteLn (god:6, ' ', wklad);

untilwklad > 2* wklad_nach ;

ReadLn;

Замечания:

В данном случае тело цикла выполняется, по крайней мере, один раз, поэтому используется цикл с постусловием.

 

Задача 1. Проверить тождество:

 

1 + 2 + 3 +…+ n = n*(n+1)/2;

 

Задача 2. Проверить тождество:

 

1 + 3 + 5 +…+ (2 * n – 1) = n2;

 

Задача 3.

Пусть даны числа a, b (a>1). Получить все члены последовательности

a, a2, a3, … меньше b.

 

Задача 4.

Числа Фибоначчи – это члены числовой последовательности u1, u2, …, которые вычисляются по следующему правилу:

u1 =1, u2 =1, u3 = u1 + u2, …, uk = uk-1 + uk-2, …

Написать программу вычисления n-ого числа Фибоначчи.

 


Пример 1. Найти сумму 10-ти чисел, используя цикл-пока.

Последовательно по одному вводите исходные числа. Каждое вновь вводимое число будет суммироваться с предыдущим результатом S.

Program summa1;

N, i : integer;

X, S : real;

S:=0; {ячейка, в которой накапливается сумма вводимых чисел}

i:= 1; { i – счетчик количества вводимых чисел}

while i<= 10 do

Write ('Введите ',i,'_е число Х');

ReadLn(X);

S:=S+X;

i:=i+1

end;

Write ('Сумма чисел равна ‘,S);

---------------

 

Пример 2 . Найти сумму чисел, используя цикл-пока.

Последовательно по одному вводите числа. Каждое вновь вводимое число будет суммироваться с предыдущим результатом S.Процесс закончится, когда введете отрицательное число.

Program summa2;

i : integer;

X, S : real;

S:=0; {ячейка, в которой накапливается сумма вводимых чисел}

X:= 0;{нулевое исходное значение Х не повлияет на сумму чисел}

while X >= 0 do

Write ('Введите одно число Х');

ReadLn(X);

if X>=0 then S:=S+X

end;

Write ('Сумма чисел равна ‘,S);

---------------

 

 

Пример 3. Найти сумму N чисел, используя цикл со счётчиком.

Укажите количество суммируемых чисел, а затем последовательно введите их. Каждое вновь вводимое число будет суммироваться с предыдущим результатом S.

Program summa3;

N, i : integer;

X, S : real;

Write(Укажите количество суммируемых чиселN');

ReadLn(N);

S:=0; {ячейка, в которой накапливается сумма вводимых чисел}

for i := 1 to N do

Write ('Введите ',i,'-е число Х');

ReadLn(X);

S:=S+X;

end;

Write ('Сумма ',N,' чисел равна ‘,S);

Семакин, Задачник 1, 210-211

 

Задача 1. Определить значение целочисленной переменной S после выполнения алгоритмов:

а)
S:= 128 для i от 1 до 4, повторять нц S:=S-3; кц S:= 128 for i:= 1 to 4 do S:=S-3; WriteLn (S)
б)
S:= 0 для i от 1 до 2, повторять нц для j от 2 до 3, повторять нц S:=i+j кц кц S:= 0 for i:= 1 to 2 do for j:= 2 to 3 do S:= i+j; WriteLn (S); ;

 


 

Трассировочные таблицы:

а)

Шаг Операция S i Условие
S:= 128 -  
I:= 1  
I<=4 да
S:=S-3;  
I:= i+1  
I<=4 да
S:=S-3;  
I:= i+1  
I<=4 да
S:=S-3;  
I:= i+1  
I<=4 да
S:=S-3;  
I:= i+1  
I<=4 нет
         

 

б)

Шаг Операция S i j Условие
S:= 0 - -  
I:= 1 -  
  I<=2 - да
  j:= 2  
j<=3 да
S:=i+j  
j:= j+1  
j<=3 да
S:=i+j  
j:= j+1  
j<=3 нет
I:= i+1  
I<=2 да
  j:= 2  
j<=3 да
S:=i+j  
j:= j+1  
j<=3 да
S:=i+j  
j:= j+1  
j<=3 нет
I:= i+1  
I<=2 нет

Задача 2. Определить значение целочисленной переменной S после выполнения алгоритмов:

а)
S:= 1; a:=1 для i от 1 до 3, повторять нц S := S + i * (i+1)*a a := a + 2 кц S:= 1; a:=1; for i:= 1 to 3 do begin S := S + i * (i+1)*a; a := a + 2; end;
б)
для i от 1 до 3, повторять нц S:= 0 для j от 2 до 2, повторять нц S:=i+j кц кц   for i:= 1 to 3 do begin S := 0; for j:= 2 to 2 do S:=i+j; end;

 

 

Задача 3. Определить значение целочисленной переменной S после выполнения алгоритмов:

а)  
S:= 0; i:=0; пока i < 3, повторять нц i := i + 1 S := S + i * i кц S:= 0; i:=0; while i < 3 do begin i := i + 1; S := S + i * i ; end;
b)  
S:= 0; i:=1; пока i > 1, повторять нц S := S + 1/ i i := i - 1 кц S:= 0; i:=1; while i > 1 do begin S := S + 1/ i; i := i – 1; end;

 


 

 

Задача 4. Определить значение целочисленной переменной S после выполнения алгоритмов:

а)
S:= 0; i:=1; j:=15; пока i < j, повторять нц S := S + i * j; i := i + 1; j:= j-1 кц S:= 0; i:=1; j:=15; while i < j do begin S := S + i * j; i := i + 1; j:= j - 1; end;
b)
a := 1; b := 1; пока a+b < 10, повторять нц a := a + 1; b := b + a; кц a := 1; b := 1; while a+b < 10 do begin a := a + 1; b := b + a; end;

 

 
 


нахождения наибольшего общего делителя двух натуральных чисел (НОД)

I. Из математики:

Наибольший общий делитель двух натуральных чисел – это число, на которое они делятся нацело.

Например: 12 и 18 имеют общие делители 2, 3, 6.

НОД(12,18) = 6

II. ММ

Дано: M и N – натуральные числа

Найти: НОД(M,N)

Связь:не существует формулы для вычисления НОД по значениям M и N, но известен алгоритм Евклида: