exopiko
دوشنبه 01 فروردین 1384, 15:27 عصر
من دانش اموز سال دوم تیزهوشان قزوین هستم پروژه پاسکالم(for dos) که باید برای بعد از عید ببرم محاسبه دو هزار فاکتوریله توجه داشته باشید چون عدد بزرگ است با برنامه فاکتوریل محاسبه نمی شود.منتظر کمک های شما هستم yahooID:exopiko
عنوان تاپیک اصلاح شد!
hr110
سه شنبه 02 فروردین 1384, 12:53 عصر
سلام،
برای نوشتن این پروژه باید یک از آرایه ها میتوانید استفاده کنید و هر رقم یکی از المنتهای آرایه شما باید باشد:
X : array[1..3000] of byte;
تمامی محاسبات و عملیاتهای ریاضی باید از پایه نوشته شود. شما نیاز دارید جمع و ضرب را شبیه سازی نموده و به جای آنکه بروی دو عدد انجام شود ، باید بروی دو ارایه اجرا شود و ...
امیدوارم که این اندک توضیات بتواند راهگشا باشد. :flower:
دنیای دلفی
سه شنبه 02 فروردین 1384, 19:49 عصر
program Zarb_Jam_Taghsim_Menha_40Ragham;
uses crt;
var
i,j,toln1,toln2,a,b,code,cary,k,tempint,ii:integer ;
n1,n2,n,tempstr:string;
nn:array[1..200] of string;
o:char;
function IntToStr(II: integer): String;
var
S: string;
begin
Str(II, S);
IntToStr := S;
end;
function StrToInt(II: string): integer;
var
S: integer;
begin
val(ii,s,code);
StrToint := S;
end;
procedure jam;
begin
toln1:=length(n1);
toln2:=length(n2);
cary:=0;
n:='';
for i:=toln1 downto 1 do
begin
a:=strtoint(n1[i]);
b:=strtoint(n2[toln2]);
if toln2<>0 then
Dec(toln2)
else
b:=0;
if a+b+cary<=9 then
begin
n:=inttostr(a+b+cary)+n;
cary:=0
end
else
begin
n:=inttostr((a+b+cary)mod 10)+n;
cary:=1;
end;
end;
if cary=1 then
n:=inttostr(cary)+n;
writeln;
for i:=1 to length(n) do
write(n[i]);
end;
procedure menha;
begin
toln1:=length(n1);
toln2:=length(n2);
n:='';
for i:=toln1 downto 1 do
begin
a:=strtoint(n1[i]);
b:=strtoint(n2[toln2]);
if toln2<>0 then
Dec(toln2)
else
b:=0;
if a-b>=0 then
n:=inttostr(a-b)+n
else
begin
tempstr:=inttostr(strtoint(n1[i-1])-1);
n1[i-1]:=tempstr[1];
n:=inttostr(((a+10)-b))+n;
end;
end;
writeln;
for i:=1 to length(n) do
write(n[i]);
end;
procedure zarb;
begin
toln1:=length(n1);
toln2:=length(n2);
cary:=0;
k:=1;
for i:=toln2 downto 1 do
begin
cary:=0;
a:=strtoint(n2[i]);
for j:=toln1 downto 1 do
begin
b:=strtoint(n1[j]);
if a*b+cary<=9 then
begin
nn[k]:=inttostr(a*b+cary)+nn[k];
cary:=0
end
else
begin
nn[k]:=inttostr((a*b+cary)mod 10)+nn[k];
tempint:=(a*b+cary);
tempint:=tempint div 10;
cary:=tempint;
end;
end;
if cary>0 then
nn[k]:=inttostr(cary)+nn[k];
Inc(k);
for ii:=1 to k-1 do
nn[k]:='0'+nn[k];
end;
Dec(k);
{ for i:=1 to k do
writeln(nn[i]);}
n1:=nn[k];
n2:=nn[k-1];
n:='';
for ii:=k-2 downto 0 do
begin
toln1:=length(n1);
toln2:=length(n2);
cary:=0;
n:='';
for i:=toln1 downto 1 do
begin
a:=strtoint(n1[i]);
b:=strtoint(n2[toln2]);
if toln2<>0 then
Dec(toln2)
else
b:=0;
if a+b+cary<=9 then
begin
n:=inttostr(a+b+cary)+n;
cary:=0
end
else
begin
n:=inttostr((a+b+cary)mod 10)+n;
cary:=1;
end;
end;
if cary=1 then
n:=inttostr(cary)+n;
n1:=n;
n2:=nn[ii];
end;
writeln;
for i:=1 to length(n) do
write(n[i]);
end;
procedure taghsim;
begin
end;
begin
clrscr;
Write('Insert Number One :');
readln(n1);
Write('Insert Number One :');
readln(n2);
if length(n2)>length(n1) then
begin
tempstr:=n1;
n1:=n2;
n2:=tempstr;
end
else
if (length(n2)=length(n1)) and (strtoint(n2[1])>strtoint(n1[1])) then
begin
tempstr:=n1;
n1:=n2;
n2:=tempstr;
end;
Write('Insert Operator * or + or - or / :');
readln(o);
case o of
'+':jam;
'-':menha;
'*':zarb;
'/':taghsim;
end;
readln;
end.
:موفق:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.