Алгоритмы (PascalABC.NET): различия между версиями
Перейти к навигации
Перейти к поиску
(Новая страница: «== Алгоритмы == * [http://pascalabc.net/wiki/index.php?title=%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B4%D0%BB%D1%8F_%D1%81%D1%82%D1%83...») |
|||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | == | + | {{TOCRight}} |
− | * | + | == Код программ == |
+ | === Сумма вводимых целых чисел === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var n := ReadInteger('Введите число слагаемых:'); | ||
+ | |||
+ | var s := 0.0; | ||
+ | for var i:=1 to n do | ||
+ | begin | ||
+ | var x := ReadReal($'Введите слагаемое №{i}:'); | ||
+ | s += x; | ||
+ | end; | ||
+ | |||
+ | Println($'Сумма равна {s}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Произведение целых чисел === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var n := ReadInteger('Введите число множителей: '); | ||
+ | |||
+ | var p := 1.0; | ||
+ | for var i:=1 to n do | ||
+ | begin | ||
+ | var x := ReadReal('Введите множитель: '); | ||
+ | p *= x; | ||
+ | end; | ||
+ | |||
+ | Println($'Произведение равно {p}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Сколько нечетных среди n введенных === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var n := ReadInteger('Введите n: '); | ||
+ | |||
+ | var c := 0; | ||
+ | for var i:=1 to n do | ||
+ | begin | ||
+ | var x := ReadInteger('Введите целое число: '); | ||
+ | if x mod 2 <> 0 then | ||
+ | c += 1; | ||
+ | end; | ||
+ | |||
+ | println($'Количество нечетных равно {c}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Защита от неверного ввода === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var x: real; | ||
+ | repeat | ||
+ | x := ReadReal('Введите x>0: '); | ||
+ | if x<=0 then | ||
+ | Println('Неверный ввод'); | ||
+ | until x>0; | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод 10 первых степеней двойки === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var x := 2; | ||
+ | for var i := 1 to 10 do | ||
+ | begin | ||
+ | writeln(i:3, ' ',x:5); | ||
+ | x *= 2; | ||
+ | end; | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод всех двухзначных чисел, кратных 5 === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var x := 10; | ||
+ | while x < 100 do | ||
+ | begin | ||
+ | writeln(x:3); | ||
+ | x += 5; | ||
+ | end; | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Вывод n первых чисел Фибоначчи === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var n := ReadInteger('Введите целое число n (n > 1): '); | ||
+ | Assert(n>1); | ||
+ | var (a,b) := (0,1); | ||
+ | Print(a,b); | ||
+ | loop n-2 do | ||
+ | begin | ||
+ | (a,b):=(b,a+b); | ||
+ | Print(b); | ||
+ | end; | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти НОД(A,B), используя алгоритм Евклида: === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var (a,b):=ReadInteger2('Введите целые числа A и B: '); | ||
+ | while b<>0 do | ||
+ | (A,B):=(B,A mod B); | ||
+ | println($'НОД(A,B) = {A}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти сумму цифр целого числа m === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var m := ReadInteger('Введите целое число m: '); | ||
+ | |||
+ | var (s,m1) := (0,abs(m)); | ||
+ | while m1 > 0 do | ||
+ | begin | ||
+ | s += m1 mod 10; | ||
+ | m1 := m1 div 10; | ||
+ | end; | ||
+ | |||
+ | println($'Сумма цифр числа {m} равна {s}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти max из введенных чисел === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var n := ReadInteger('Введите целое число n (n>0): '); | ||
+ | assert(n>0); | ||
+ | |||
+ | var x := ReadReal('Введите 1 число: '); | ||
+ | var max := x; | ||
+ | for var i := 2 to n do | ||
+ | begin | ||
+ | x := ReadReal($'Введите {i} число: '); | ||
+ | if max < x then | ||
+ | max := x; | ||
+ | end; | ||
+ | |||
+ | Println($'Максимальное из введенных чисел: {max}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Найти min, удовлетворяющее условию p(x) === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | // Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false) | ||
+ | function p(x: real): boolean:=x > 0; | ||
+ | |||
+ | begin | ||
+ | var n := ReadInteger('Введите целое число n (n>0): '); | ||
+ | assert(n>0); | ||
+ | |||
+ | var min := real.MaxValue; | ||
+ | for var i := 1 to n do | ||
+ | begin | ||
+ | var x := ReadReal($'Введите {i} число: '); | ||
+ | if (x < min) and p(x) then | ||
+ | min := x; | ||
+ | end; | ||
+ | |||
+ | if min = real.MaxValue then | ||
+ | println('Нет чисел, удовлетворяющих условию') | ||
+ | else println($'Минимальное из введенных чисел, удовлетворяющее условию: {min}'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Есть ли среди введенных число k? === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | var n,k: integer; | ||
+ | begin | ||
+ | write('Введите целые числа n (n>0) и k: '); | ||
+ | readln(n,k); | ||
+ | assert(n>0); | ||
+ | |||
+ | var Exists := false; | ||
+ | for var i := 1 to n do | ||
+ | begin | ||
+ | write('Введите ', i, ' целое число: '); | ||
+ | var x := ReadInteger; | ||
+ | if x = k then | ||
+ | begin | ||
+ | Exists := true; | ||
+ | break; | ||
+ | end; | ||
+ | end; | ||
+ | |||
+ | if Exists then | ||
+ | writeln('Число ', k, ' было введено') | ||
+ | else writeln('Число ', k, ' не было введено'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Является ли число N>1 простым? === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var N := ReadInteger('Введите целое число N (N>1): '); | ||
+ | assert(N>1); | ||
+ | |||
+ | var IsPrime := True; | ||
+ | for var i := 2 to round(sqrt(N)) do | ||
+ | if N mod i = 0 then | ||
+ | begin | ||
+ | IsPrime := False; | ||
+ | break; | ||
+ | end; | ||
+ | |||
+ | if IsPrime then | ||
+ | writeln('Число ', N, ' является простым') | ||
+ | else writeln('Число ', N, ' является составным'); | ||
+ | end. | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | === Разложение числа на простые множители === | ||
+ | <syntaxhighlight lang="pascal" line> | ||
+ | begin | ||
+ | var x := ReadInteger('Введите целое число x (x>1): '); | ||
+ | assert(x>1); | ||
+ | |||
+ | var i := 2; | ||
+ | write(x, ' = 1'); | ||
+ | repeat | ||
+ | if x mod i = 0 then | ||
+ | begin | ||
+ | Print('*', i); | ||
+ | x := x div i; | ||
+ | end | ||
+ | else i += 1; | ||
+ | until x = 1; | ||
+ | end. | ||
+ | </syntaxhighlight> |
Текущая версия на 08:10, 18 июня 2021
Код программ
Сумма вводимых целых чисел
1 begin
2 var n := ReadInteger('Введите число слагаемых:');
3
4 var s := 0.0;
5 for var i:=1 to n do
6 begin
7 var x := ReadReal($'Введите слагаемое №{i}:');
8 s += x;
9 end;
10
11 Println($'Сумма равна {s}');
12 end.
Произведение целых чисел
1 begin
2 var n := ReadInteger('Введите число множителей: ');
3
4 var p := 1.0;
5 for var i:=1 to n do
6 begin
7 var x := ReadReal('Введите множитель: ');
8 p *= x;
9 end;
10
11 Println($'Произведение равно {p}');
12 end.
Сколько нечетных среди n введенных
1 begin
2 var n := ReadInteger('Введите n: ');
3
4 var c := 0;
5 for var i:=1 to n do
6 begin
7 var x := ReadInteger('Введите целое число: ');
8 if x mod 2 <> 0 then
9 c += 1;
10 end;
11
12 println($'Количество нечетных равно {c}');
13 end.
Защита от неверного ввода
1 begin
2 var x: real;
3 repeat
4 x := ReadReal('Введите x>0: ');
5 if x<=0 then
6 Println('Неверный ввод');
7 until x>0;
8 end.
Вывод 10 первых степеней двойки
1 begin
2 var x := 2;
3 for var i := 1 to 10 do
4 begin
5 writeln(i:3, ' ',x:5);
6 x *= 2;
7 end;
8 end.
Вывод всех двухзначных чисел, кратных 5
1 begin
2 var x := 10;
3 while x < 100 do
4 begin
5 writeln(x:3);
6 x += 5;
7 end;
8 end.
Вывод n первых чисел Фибоначчи
1 begin
2 var n := ReadInteger('Введите целое число n (n > 1): ');
3 Assert(n>1);
4 var (a,b) := (0,1);
5 Print(a,b);
6 loop n-2 do
7 begin
8 (a,b):=(b,a+b);
9 Print(b);
10 end;
11 end.
Найти НОД(A,B), используя алгоритм Евклида:
1 begin
2 var (a,b):=ReadInteger2('Введите целые числа A и B: ');
3 while b<>0 do
4 (A,B):=(B,A mod B);
5 println($'НОД(A,B) = {A}');
6 end.
Найти сумму цифр целого числа m
1 begin
2 var m := ReadInteger('Введите целое число m: ');
3
4 var (s,m1) := (0,abs(m));
5 while m1 > 0 do
6 begin
7 s += m1 mod 10;
8 m1 := m1 div 10;
9 end;
10
11 println($'Сумма цифр числа {m} равна {s}');
12 end.
Найти max из введенных чисел
1 begin
2 var n := ReadInteger('Введите целое число n (n>0): ');
3 assert(n>0);
4
5 var x := ReadReal('Введите 1 число: ');
6 var max := x;
7 for var i := 2 to n do
8 begin
9 x := ReadReal($'Введите {i} число: ');
10 if max < x then
11 max := x;
12 end;
13
14 Println($'Максимальное из введенных чисел: {max}');
15 end.
Найти min, удовлетворяющее условию p(x)
1 // Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false)
2 function p(x: real): boolean:=x > 0;
3
4 begin
5 var n := ReadInteger('Введите целое число n (n>0): ');
6 assert(n>0);
7
8 var min := real.MaxValue;
9 for var i := 1 to n do
10 begin
11 var x := ReadReal($'Введите {i} число: ');
12 if (x < min) and p(x) then
13 min := x;
14 end;
15
16 if min = real.MaxValue then
17 println('Нет чисел, удовлетворяющих условию')
18 else println($'Минимальное из введенных чисел, удовлетворяющее условию: {min}');
19 end.
Есть ли среди введенных число k?
1 var n,k: integer;
2 begin
3 write('Введите целые числа n (n>0) и k: ');
4 readln(n,k);
5 assert(n>0);
6
7 var Exists := false;
8 for var i := 1 to n do
9 begin
10 write('Введите ', i, ' целое число: ');
11 var x := ReadInteger;
12 if x = k then
13 begin
14 Exists := true;
15 break;
16 end;
17 end;
18
19 if Exists then
20 writeln('Число ', k, ' было введено')
21 else writeln('Число ', k, ' не было введено');
22 end.
Является ли число N>1 простым?
1 begin
2 var N := ReadInteger('Введите целое число N (N>1): ');
3 assert(N>1);
4
5 var IsPrime := True;
6 for var i := 2 to round(sqrt(N)) do
7 if N mod i = 0 then
8 begin
9 IsPrime := False;
10 break;
11 end;
12
13 if IsPrime then
14 writeln('Число ', N, ' является простым')
15 else writeln('Число ', N, ' является составным');
16 end.
Разложение числа на простые множители
1 begin
2 var x := ReadInteger('Введите целое число x (x>1): ');
3 assert(x>1);
4
5 var i := 2;
6 write(x, ' = 1');
7 repeat
8 if x mod i = 0 then
9 begin
10 Print('*', i);
11 x := x div i;
12 end
13 else i += 1;
14 until x = 1;
15 end.