Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   паскаль, вы программер? (https://forum.antichat.xyz/showthread.php?t=55494)

rubik-nerubik 10.12.2007 21:00

паскаль, вы программер?
 
вот собственно не могу разхобраться с длинной арифметикой,
Составить программу для вычисления точного значения суммы 1!+2!+3!+..+n! при n>10.

может кто подскажет задачу?)

народ кто в блок-схемах фарит?

оч нужно к ней:
program two;
uses crt;
const
MAX=20;
type
line=Array[1..MAX] of real;
var
smin:real;
imin:Integer;
i,j,n,m:Integer;
x:Array[1..MAX] of line;
buf:line;
juf:Array[1..MAX] of Integer;
inp:Text;
begin
Assign(inp,'matrix.txt');
Reset(inp);
Read(inp,n,m);{Є®«ЁзҐбвў® бвp®Є Ё бв®«Ўж®ў}
if (MAX<n) or (MAX<m) then
Write('*Ґ¦Ґ«*о бзЁв*вм! ')
else begin
for i:=1 to n do
for j:=1 to m do
Read(inp,x[i][j]);
for i:=1 to n do begin
buf[i]:=x[i][1];
juf[i]:=1;
for j:=2 to m do
if buf[i]<x[i][j] then begin
buf[i]:=x[i][j];
juf[i]:=j
end
end;
smin:=buf[1];
for i:=2 to n do begin
if smin>buf[i] then begin
smin:=buf[i];
imin:=i
end
end;
Writeln;
Write('‘Ґ¤«®ўaп в®зЄa x=',juf[imin],' y=',imin)
end;
Close(inp)
end.

вот.

LolFEm 10.12.2007 21:41

может это поможет разобраться:
Задача:
Рекурсивная функция, считающая факториал числа.


Код:
Код:


       


program Factorial;
var n:integer;

function Factor(n:integer):real;
 var v:real;
 Begin
 if n in [0,1] then Factor:= 1 else Factor:= n*Factor(n-1);
 end;

begin
 Write('Введите число(0..33): ');
 Readln(n);
 Write('Факториал этого числа равен: ', Factor(n):11:0);
 Readln;
End.


~Lexx~ 11.12.2007 04:28

Блин начни сам составлят ьблок схему - только перед этим приведи прогу к нормальному виду - всмысле чтобы циклы и фунции шли с отступом - ка ктолько отформатишь - блок схему ля такой мелкой программки ты сам напишешь как два пальца об асфальт.

rubik-nerubik 12.12.2007 20:38

собственно насчет задачи я, эта прога считает факториал(до 33 ), но мне надо вида:
1!+2!.. до вводимого числа о0 вот.

~Lexx~ 13.12.2007 00:54

Writeln('vvedite chislo');
Readln(n);
sum:=0;
fact:=1;
for i:=1 to n do begin
fact:=fact*i;
sum:=sum+fact;
end;

writeln(sum);
readln;
end.

Это без выпендрежа - голый алгоритм вычисления.

Aristarh Dark 13.12.2007 07:36

Чуваку нужна длинная арифметика. Представленные листинги на паскале умрут после 18! - проверено еще в 96 году прошлого века.
to rubik-nerubik пиши модуль работы с длинной арифметикой, или качай из сети.

~Lexx~ 13.12.2007 17:02

ай мама моя дорогая... какое ж это западло - стандартный инт вешаеться после факториала 18...
А Double? а самому написать объект? И определить для него методы? (подсказка - определяешь массив(можно динамический) и в каждый элемент - помещаешь число - от 1-до 10 - вот тебе интерпретация числа. И просто напросто пишешь для него функцию умножения - типа там смещаться должно туда-то итд - сам напиши - полезно для мозгов). Но это если уж тебе совсем надо большой факториал найти. А если так по мелочи дабла должно хватить. А вот за рекурсию я бы нафиг руки отрубал...

ПС проверять тут нечего - детская программа - все устно считаеться на сколько у тебя хватит размерности.

HulkRus 13.12.2007 17:35

Lexx, вы много знаете о haskell? :) Программами на этом языке нужно любоваться) А вы так про реккурсию плохо отзываетесь :mad:
rubik-nerubik, надыбай модуль для работы с длиннющими числами и вот те с longint, реккурентное соотношение нашел, функцию написал), работает реактивно и никаких циклов! Паскаль:
Код:

program Good;
uses crt;
var
  k,max:byte;
function fuck(k:byte):longint;
  begin
  if k=1 then fuck:=1
  else fuck:=(max-k+2)*fuck(k-1)+1;
end;
begin
  readln(k);  max:=k;
  writeln(fuck(k));
end.


~Lexx~ 13.12.2007 19:23

Ага офигенно - вот какраз про это я и говорю... А вы когда-нить слышал и о таком предмете как исследование операций? Так вот - рекурсия - это худщшее что может быть для вычиления каки-бы то ни было больших или маленьких чисел...
А еще блин ну что это такое... рекурсией каждый раз считать факториал... Просто стот сравнить количество операций для вычиления всего задания по моему алгоритму и по вашему...
У мен якаждый раз мы используем предыдущий член - тот который уже вычислен. Конечно это неявная рекурсия, но здесь она вполне допустима - нету операций с плавающей точкой.
А предыдущая программа как раз и захлебнеться, причем скорее всего где-то в районе 150-200. - Только из-за недостатка оперативы... А нет даже раньше - у паскаля задействовано памяти на 600 000 интовых элементов. так что считаем...

rubik-nerubik 13.12.2007 19:30

~Lexx~
флудишь больше)))

HulkRus этот пример точно по моему заданию? не только факториал??
Составить программу для вычисления точного значения суммы 1!+2!+3!+..+n! при n>10.
?????


Время: 10:43