Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 09.12.2011, 19:53   #1 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Pascal. Функции и процедуры



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

Старый 09.12.2011, 19:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Найдены схожие с вашей темы, можете их посмотреть

Двумерные массивы и процедуры PASCAL
Процедуры, функции

Старый 09.12.2011, 22:02   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Сова Посмотреть сообщение
Кто чем сможет! Помощь нужна.)
Ну... если только этим:
Код:
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.
Vladimir_S вне форума   Ответить с цитированием
Старый 10.12.2011, 01:39   #3 (permalink)
Сова
Новичок
 
Регистрация: 28.10.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо...
Сова вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.