Алгоритмы (PascalABC.NET)
Версия от 13:14, 5 июня 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:2,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) := (1,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 write('Введите целое число N (N>1): ');
3 var N := ReadInteger;
4 assert(N>1);
5
6 var IsPrime := True;
7 for var i := 2 to round(sqrt(N)) do
8 if N mod i = 0 then
9 begin
10 IsPrime := False;
11 break;
12 end;
13
14 if IsPrime then
15 writeln('Число ', N, ' является простым')
16 else writeln('Число ', N, ' является составным');
17 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.