Алгоритмы (PascalABC.NET): различия между версиями

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
Строка 198: Строка 198:
 
<syntaxhighlight lang="pascal" line>
 
<syntaxhighlight lang="pascal" line>
 
begin
 
begin
   write('Введите целое число N (N>1): ');
+
   var N := ReadInteger('Введите целое число N (N>1): ');
  var N := ReadInteger;
 
 
   assert(N>1);
 
   assert(N>1);
 
   
 
   

Версия 15:47, 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: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) := (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   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.