Геометрическая и Арифметическая прогрессия

Программа вычисляющая n-й член арифметической или геометрической прогрессии(в зависимости от выбора в меню), а также сумму первых членов арифметической или геометрической прогрессии(в зависимости от выбора в меню). Сделана через процедуры. Всем на здоровье!

program progressia;

var
  choice: integer;

procedure progres;
var
  a1, n, k, r: real;
begin
  writeln('введите первый член прогрессии');
  readln(a1);
  writeln('введите количество суммируемых членов');
  readln(n);
  writeln('введите шаг');
  readln(r);
  
  if r > 0 then
    writeln('последовательность возрастающая');
  if r = 0 then
    writeln('последовательность стационарна');
  if r < 0 then
    writeln('последовательность убывающая');
  k := (2 * a1 + (n - 1) * r) / 2;
  k := k * n;
  writeln('сумма первых ', n, ' членов равна ', k);
  writeln('для продолжения нажмите enter');
  readln;
end;

procedure geo;
var
  b1, q, n, s: real;
begin
  writeln('введите первый член прогрессии');
  readln(b1);
  writeln('введите знаменатель прогрессии');
  readln(q);
  writeln('введите количество суммируемых членов');
  readln(n);
  
  if b1 = 0 then
  begin
    writeln('первый член прогрессии не должен быть равен 0');
    readln;
    if q = 0 then
      writeln('знаменатель прогрессии не должен быть равен 0');
    readln;
  end
    else
  begin
    s := b1 * (exp(ln(q) * n) - 1);
    s := s / (q - 1);
    writeln('Сумма ', n, ' первых членов геометрической прогрессии равна ', s);
    writeln('для продолжения нажмите enter');
    readln;
  end;
end;

procedure shit;
var
  a1, n, k, r: real;
begin
  writeln('введите первый член прогрессии');
  readln(a1);
  writeln('введите шаг');
  readln(r);
  writeln('введите (n-й) член прогрессии который необходимо найти');
  readln(n);
  k := a1 + ((n - 1) * r);
  writeln('n=', k);
  writeln('для продолжения нажмите enter');
  readln;
end;

procedure shit2;
var
  b1, q, n, s: real;
begin
  writeln('введите первый член прогрессии');
  readln(b1);
  writeln('введите знаменатель прогрессии');
  readln(q);
  writeln('введите (n-й) член прогрессии который необходимо найти');
  readln(n);
  s := b1 * exp(ln(q) * (n - 1));
  writeln('n=', s);
  writeln('для продолжения нажмите enter');
  readln;
end;

procedure menu;
begin
  writeln('1.вычислить сумму первых n членов арифм. прогрессии');
  writeln('2.вычислить (n-й) член арифметической прогрессии');
  writeln('3.вычислить сумму  n  первых членов геометрической прогрессии');
  writeln('4.вычислить (n-й) член геометрической прогрессии');
  writeln('5.завершить работу');
  writeln;
  writeln('введите цифру');
end;

begin
  repeat 
    menu;
    readln(choice);
    case choice of
      1: progres;
      2: shit;
      3: geo;
      4: shit2
    end;
  until choice = 5;
end.
Теги:
прогрессия, меню, вычисление, процедура
Добавлено: 18 Ноября 2013 01:15:09 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...