Məsələ çox ehtimal ki, universitet məsələsidir. Universitetdə isə, sadəcə həll yoluna baxacaqlar.
Bəs double və ya float götürsək düz alınar? Çox ehtimal ki, 20/20 faktorial ədədini komputer 0 olaraq götürəcək. Mən bir dəfə kəsrin məxrəcində belə böyük ədəddən istifadə etmişdim və komputer bunu 0 olaraq götürmüşdü. Yəqin ki, superkomputerlərdə dəqiq nəticəni almaq olar.
Bu məsələ göründüyü kimi sadə deyil. Alqoritm düz ola bilər, amma cavabı kimsə yoxlayıb? İş ondadır ki, 20 faktorial çox böyük rəqəmdir, daha dəqiq 20! = 2432902008176640000 . Bu ədəd int tipli dəyişənə sığmaz, Bunun üçün ən azı dəyişən tipi unsigned long long int olmalıdı və kompüterin arxitekturası 64 bitlik 2^64 = 18446744073709552000. Amma yenə də bu həll deyil, 20 əvəzinə 50! olsaydı işlər çox mürəkkəbləşərdi.
Salam
[code]
program Faktorial;
var i:integer;
s,f,x: real;
begin
s:=1;
f:=1;
readln(x);
for i:=1 to 20 do begin
f:=f*i;
s:=s*(x+i/f);
end;
writeln(s);
end.
[/code]
Təəssüfki Pascal proqramlaşdırma dilin bilmirəm, amma C++ da həmin proqram aşağdakı kimdir. Əsas alqoritmi anla , Pascal da yazmaq çətin olmaz.
Qeyd. səhv yazmadığınl ,yəni x1,x2,...,x20 olmadığını yanlız bir x olduğun nəzərə aldım.
[code]#include
#include
using namespace std;
int main()
{int i,f=1;
double x,S=1;
cin>>x;
for(i=1;i<=20;i++)
{f=f*i;
S=S*(x+i/f);}
cout<<"hasil "<<S;
return 0;
}[/code]
Pascal’da Şərti qurarkən iki-üç hal eyni anda icra olunur
Desktop Proqramlaşdırma Java ya C#