Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Pascal. Функции и процедуры (http://www.tehnari.ru/f41/t60998/)

Сова 09.12.2011 19:53

Pascal. Функции и процедуры
 
:tehnari_ru_837:
:tehnari_ru_235:
Кто чем сможет! Помощь нужна.)
Пользователь вводит два вещественных числа: a и q, а также целое число n. Для вычисления характеристик геометрической прогрессии (a – первый член, q – знаменатель, n – номер искомого члена прогрессии) составить функцию, которая получает введенные числа в качестве параметров. Функция находит n-й член и сумму первых n членов прогрессии и возвращает их в качестве двух других параметров.
Результат, который возвращает сама функция, должен позволять отслеживать следующие случаи (зависящие от значений введенных чисел): неположительный номер n, возрастающая или убывающая прогрессия, все члены прогрессии равны (вырожденный случай).

Vladimir_S 09.12.2011 22:02

Цитата:

Сообщение от Сова (Сообщение 631877)
Кто чем сможет! Помощь нужна.)

Ну... если только этим:
Код:

VAR
 a,q,an,Sn:Real;
 n:Integer;

Procedure Progres(a1,q1:real; n1:integer; var an1:real; var Sn1:real);
var i:integer; qn1:real;
begin
 if n1<=0 then an1:=0 else
  begin
  an1:=a1;
  for i:=1 to n1-1 do an1:=an1*q1;
  end;
 If q1=1 then Sn1:=a1*n1 else
  begin
  qn1:=1;
  for i:=1 to n1 do qn1:=qn1*q1;
  Sn1:=a1*(qn1-1)/(q1-1);
  end;
end;

BEGIN
 Write('a= ');
 Readln(a);
 Repeat
  Write('q= ');
  Readln(q);
  If q<=0 then Writeln('Error: q must be >0!');
 Until q>0;
 Write('n= ');
 Readln(n);
 Progres(a,q,n,an,Sn);
 If an=0 then writeln('Error: n<0 or n=0') else
  begin
  Write('Progression is ');
  If Abs(an)>Abs(a) then writeln('increasing') else
  If Abs(an)<Abs(a) then writeln('decreasing') else
  writeln('singular');
  Write('an= ',an:0:3,'    Sn= ',Sn:0:3);
  end;
 Readln
 END.


Сова 10.12.2011 01:39

Спасибо... :tehnari_ru_208:


Часовой пояс GMT +4, время: 09:14.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.