Стандартные задачи на циклы: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
UnREAL (обсуждение | вклад) Нет описания правки |
UnREAL (обсуждение | вклад) Нет описания правки |
||
Строка 55: | Строка 55: | ||
[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_09.pas Ссылка на алгоритм в среде WDE] | [http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_09.pas Ссылка на алгоритм в среде WDE] | ||
'''№10. Найти НОД(A,B), используя алгоритм Евклида:''' | '''№10. Найти НОД(A,B), используя алгоритм Евклида:''' | ||
Строка 75: | Строка 76: | ||
[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_10.pas Ссылка на алгоритм в среде WDE] | [http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_10.pas Ссылка на алгоритм в среде WDE] | ||
''' | |||
'''№11. Найти сумму цифр целого положительного числа m''' | |||
<source lang="pascal"> | |||
begin | |||
write('Введите целое положительное число m: '); | |||
var m : integer; | |||
readln(m); | |||
assert(m > 0); | |||
var s := 0; | |||
while m > 0 do | |||
begin | |||
s += m mod 10; | |||
m := m div 10; | |||
end; | |||
writeln('Сумма цифр числа m равна ', s); | |||
end. | |||
</source> | |||
[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_11.pas Ссылка на алгоритм в среде WDE] | |||
== Максимумы и минимумы == | |||
'''№12. Найти max из введенных чисел''' | |||
<source lang="pascal"> | <source lang="pascal"> | ||
begin | begin | ||
write('Введите целое число n (n > | write('Введите целое число n (n>0): '); | ||
var n : integer; | var n : integer; | ||
readln(n); | readln(n); | ||
assert(n>0); | |||
var | write('Введите 1 число: '); | ||
var x : real; | |||
for var i := | readln(x); | ||
var max := x; | |||
for var i := 2 to n do | |||
begin | begin | ||
write('Введите ', i, ' число: '); | |||
write( | readln(x); | ||
if max < x then | |||
max := x; | |||
end; | end; | ||
writeln('Максимальное из введенных чисел: ', max); | |||
end. | end. | ||
</source> | </source> | ||
[http://pascalabc.net/WDE/?shared=UnREAL/ | [http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_12.pas Ссылка на алгоритм в среде WDE] | ||
''' | |||
'''№12a. Найти min, удовлетворяющее условию p(x)''' | |||
<source lang="pascal"> | <source lang="pascal"> | ||
// Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false) | |||
function p(x : real) : boolean; | |||
begin | begin | ||
write('Введите целое число n (n > | if x > 0 then | ||
Result := true | |||
else | |||
Result := false; | |||
end; | |||
begin | |||
write('Введите целое число n (n>0): '); | |||
var n : integer; | var n : integer; | ||
readln(n); | readln(n); | ||
assert(n>0); | |||
var | var min := real.MaxValue; | ||
for var i := 1 to n do | |||
for var i := | |||
begin | begin | ||
var | var x : real; | ||
write( | write('Введите ', i, ' число: '); | ||
readln(x); | |||
if (x < min) and p(x) then | |||
min := x; | |||
end; | end; | ||
if min = real.MaxValue then | |||
writeln('Нет чисел удовлетворяющих условию (являющихся положительными)') | |||
else | |||
writeln('Минимальное из введенных чисел и удовлетворяющее условию (являющееся положительным): ', min); | |||
end. | end. | ||
</source> | </source> | ||
[http://pascalabc.net/WDE/?shared=UnREAL/ | [http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_12a.pas Ссылка на алгоритм в среде WDE] | ||
== Суммирование рядов (конечных и бесконечных) == | |||
''' | '''№13. Вычислить <math>\sum^n_{i=1} a^i/i!</math>''' | ||
<source lang="pascal"> | <source lang="pascal"> | ||
begin | begin | ||
write('Введите | write('Введите число a и n (n>0): '); | ||
var a : real; | |||
var n : integer; | var n : integer; | ||
readln(n); | readln(a,n); | ||
var | assert(n>0); | ||
var | var x := a; | ||
var s := x; | |||
for var i := | for var i := 2 to n do | ||
begin | begin | ||
x *= a / i; | |||
s += x; | |||
end; | end; | ||
writeln('Сумма ',chrunicode(931),'(i=1..n) a^i/i! равна ', s); | |||
end. | end. | ||
</source> | </source> | ||
[http://pascalabc.net/WDE/?shared=UnREAL/ | [http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_13.pas Ссылка на алгоритм в среде WDE] |
Версия от 22:32, 27 ноября 2010
Простейшие алгоритмы
(в разработке)
Рекуррентные соотношения
№7. Вывод 10 первых степеней двойки
begin
var x := 2;
for var i := 1 to 10 do
begin
writeln(i:2,x:5);
x *= 2;
end;
end.
Ссылка на алгоритм в среде WDE
№8. Вывод всех двухзначных чисел, кратных 5
begin
var x := 10;
while x < 100 do
begin
writeln(x:3);
x += 5;
end;
end.
Ссылка на алгоритм в среде WDE
№9. Вывод n первых чисел Фибоначчи
begin
write('Введите целое число n (n > 1): ');
var n : integer;
readln(n);
var a := 1;
var b := 1;
write(1, ' ', 1, ' ');
for var i := 3 to n do
begin
var c := a + b;
write(c, ' ');
a := b;
b := c;
end;
end.
Ссылка на алгоритм в среде WDE
№10. Найти НОД(A,B), используя алгоритм Евклида:
НОД(A,B) = НОД(B,A mod B); НОД(A,0) = A
begin
write('Введите целые числа A и B: ');
var A,B,C : integer;
readln(A,B);
repeat
C := A mod B;
A := B;
B := C;
until C = 0;
write('НОД(A,B) = ', A);
end.
Ссылка на алгоритм в среде WDE
№11. Найти сумму цифр целого положительного числа m
begin
write('Введите целое положительное число m: ');
var m : integer;
readln(m);
assert(m > 0);
var s := 0;
while m > 0 do
begin
s += m mod 10;
m := m div 10;
end;
writeln('Сумма цифр числа m равна ', s);
end.
Ссылка на алгоритм в среде WDE
Максимумы и минимумы
№12. Найти max из введенных чисел
begin
write('Введите целое число n (n>0): ');
var n : integer;
readln(n);
assert(n>0);
write('Введите 1 число: ');
var x : real;
readln(x);
var max := x;
for var i := 2 to n do
begin
write('Введите ', i, ' число: ');
readln(x);
if max < x then
max := x;
end;
writeln('Максимальное из введенных чисел: ', max);
end.
Ссылка на алгоритм в среде WDE
№12a. Найти min, удовлетворяющее условию p(x)
// Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false)
function p(x : real) : boolean;
begin
if x > 0 then
Result := true
else
Result := false;
end;
begin
write('Введите целое число n (n>0): ');
var n : integer;
readln(n);
assert(n>0);
var min := real.MaxValue;
for var i := 1 to n do
begin
var x : real;
write('Введите ', i, ' число: ');
readln(x);
if (x < min) and p(x) then
min := x;
end;
if min = real.MaxValue then
writeln('Нет чисел удовлетворяющих условию (являющихся положительными)')
else
writeln('Минимальное из введенных чисел и удовлетворяющее условию (являющееся положительным): ', min);
end.
Ссылка на алгоритм в среде WDE
Суммирование рядов (конечных и бесконечных)
№13. Вычислить <math>\sum^n_{i=1} a^i/i!</math>
begin
write('Введите число a и n (n>0): ');
var a : real;
var n : integer;
readln(a,n);
assert(n>0);
var x := a;
var s := x;
for var i := 2 to n do
begin
x *= a / i;
s += x;
end;
writeln('Сумма ',chrunicode(931),'(i=1..n) a^i/i! равна ', s);
end.