Salam. s=(x+1/1!)*(x+2/2!)*(x+3/3!)*…*(x+20/20!) misalı Turbo Pascalda necə yaza bilərəm? Bilən varsa köməklik etsin zəhmət olmasa.
Salam. s=(x+1/1!)*(x+2/2!)*(x+3/3!)*…*(x+20/20!) misalı Turbo Pascalda necə yaza bilərəm? Bilən varsa köməklik etsin zəhmət olmasa.
Verilmiş cavablar və yazılan şərhlər (4 cavab var)
1
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.
1
#include
2
#include
3
using namespace std;
4
int main()
5
{int i,f=1;
6
double x,S=1;
7
cin>>x;
8
for(i=1;i<=20;i++)
9
{f=f*i;
10
S=S*(x+i/f);}
11
cout<<"hasil "<<S;
12
return 0;
13
}
2
Salam
1
program Faktorial;
2
var i:integer;
3
s,f,x: real;
4
begin
5
s:=1;
6
f:=1;
7
readln(x);
8
for i:=1 to 20 do begin
9
f:=f*i;
10
s:=s*(x+i/f);
11
end;
12
writeln(s);
13
end.
2
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.
3
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.
Sual verin
Cavab verin