Стандартные задачи на циклы: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 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]


'''№9. Вывод n первых чисел Фибоначчи'''
 
'''№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 > 1): ');
   write('Введите целое число n (n>0): ');
   var n : integer;
   var n : integer;
   readln(n);
   readln(n);
   var a := 1;
   assert(n>0);
   var b := 1;
  write('Введите 1 число: ');
   write(1, ' ', 1, ' ');
   var x : real;
   for var i := 3 to n do
   readln(x);
  var max := x;
   for var i := 2 to n do
   begin
   begin
    var c := a + b;
     write('Введите ', i, ' число: ');
     write(c, ' ');
     readln(x);
     a := b;
     if max < x then
     b := c;
      max := x;
   end;
   end;
  writeln('Максимальное из введенных чисел: ', max);
end.
end.
</source>
</source>


[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_09.pas Ссылка на алгоритм в среде WDE]
[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_12.pas Ссылка на алгоритм в среде WDE]


'''№9. Вывод n первых чисел Фибоначчи'''
 
'''№12a. Найти min, удовлетворяющее условию p(x)'''
<source lang="pascal">
<source lang="pascal">
// Условие взятое как пример (Если число положительное, то условие p(x) возвращает true, иначе false)
function p(x : real) : boolean;
begin
begin
   write('Введите целое число n (n > 1): ');
  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);
   var a := 1;
   assert(n>0);
   var b := 1;
   var min := real.MaxValue;
  write(1, ' ', 1, ' ');
   for var i := 1 to n do
   for var i := 3 to n do
   begin
   begin
     var c := a + b;
     var x : real;
     write(c, ' ');
     write('Введите ', i, ' число: ');
     a := b;
     readln(x);
     b := c;
     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/Algoritm_09.pas Ссылка на алгоритм в среде WDE]
[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_12a.pas Ссылка на алгоритм в среде WDE]
 
 
== Суммирование рядов (конечных и бесконечных) ==


'''№9. Вывод n первых чисел Фибоначчи'''
'''№13. Вычислить <math>\sum^n_{i=1} a^i/i!</math>'''
<source lang="pascal">
<source lang="pascal">
begin
begin
   write('Введите целое число n (n > 1): ');
   write('Введите число a и n (n>0): ');
  var a : real;
   var n : integer;
   var n : integer;
   readln(n);
   readln(a,n);
   var a := 1;
  assert(n>0);
   var b := 1;
   var x := a;
  write(1, ' ', 1, ' ');
   var s := x;
   for var i := 3 to n do
   for var i := 2 to n do
   begin
   begin
     var c := a + b;
     x *= a / i;
     write(c, ' ');
     s += x;
    a := b;
    b := c;
   end;
   end;
  writeln('Сумма ',chrunicode(931),'(i=1..n) a^i/i! равна ', s);
end.
end.
</source>
</source>


[http://pascalabc.net/WDE/?shared=UnREAL/Algoritm_09.pas Ссылка на алгоритм в среде WDE]
[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.

Ссылка на алгоритм в среде WDE