Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2010, 18:38   #1
Figushkin
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 31
По умолчанию Подправьте рограммудля вычисления суммы для заданного n

Написать программу, в Паскале, вычисления суммы формула.JPG
для заданного n. Дробь должна быть несократимой (p, q - натуральные).
Я ввожу n(кол-во элементов) и мне в ответ идет P/Q не сокращаемая;

Program shest;
uses crt;
var n,p,q,i,c,z:integer;

procedure pervaya(n:integer; var p,q:integer);
var c,z:integer;
begin
p:=0;
q:=0;
for i:=2 to n do
begin
if odd(i) then
p:=p*i-q
else
p:=p*i+q;
q:=q*i;
end;
c:=p;
z:=q;
while c<>z do
Begin
if c>z then
c:=c-z
else
z:=z-c;
end;
end;


begin
clrscr;
repeat
write('vvedite naturalnoe chislo n=');
readln(n);
until n>0;
pervaya(p,q,n);
writeln ('P/Q=', p,'/',q);
readln;
repeat until keypressed;
end.

не работает нормально.
Надо обязательно через процедуру.
исправьте плз.
Figushkin вне форума Ответить с цитированием
Старый 21.05.2010, 20:28   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Код:
Program shest;
uses crt;
var n,p,q,i,c,z:integer;

procedure pervaya(n:integer; var p,q:integer);
var c,z:integer;
begin
p:=0;//все на 0 будешь умножать? p:=1;
q:=0;//тож самое q:=1;
for i:=2 to n do
begin
if odd(i) then
p:=p*i-q // здесь наоборот, если нечетное то + p:=p*i+q
else
p:=p*i+q;// здесь наоборот, если четное то - p:=p*i-q
q:=q*i;
end;
{ // а это для чего ?
c:=p;
z:=q;
while c<>z do
Begin
if c>z then
c:=c-z
else
z:=z-c;
end;
}
end;

begin
clrscr;
repeat
write('vvedite naturalnoe chislo n=');
readln(n);
until n>0;
pervaya(p,q,n); // порядок переменных перепутал pervaya(n,p,q);
writeln ('P/Q=', p,'/',q);
readln;
repeat until keypressed;
end.
ну а все вместе
Код:
Program shest;
uses crt;
var n,p,q,i,c,z:integer;

procedure pervaya(n:integer; var p,q:integer);
var c,z:integer;
begin
p:=1;
q:=1;
for i:=2 to n do
begin
if odd(i) then
 p:=p*i+q
else
 p:=p*i-q;
q:=q*i;
writeln(p,' / ',q); //Это для наглядности
end;
end;

begin
clrscr;
repeat
write('vvedite naturalnoe chislo n=');
readln(n);
until n>0;
pervaya(n,p,q);
writeln ('P/Q=', p,'/',q);
readln;
repeat until keypressed;
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 21.05.2010, 21:04   #3
Figushkin
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 31
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить функцию для вычисления значения y=P(x) многочлена для заданного аргумента x KASPEER Помощь студентам 2 12.01.2010 15:03
Составить программу вычисления суммы. Obender13 Помощь студентам 0 05.11.2009 18:14
вычисления суммы: 1! + 2! + 3! + ... PR0Z0N Помощь студентам 2 18.06.2009 22:05
вычисления суммы ряда kJlaCuk Паскаль, Turbo Pascal, PascalABC.NET 3 17.09.2008 23:24