mam do napisania program,ktory liczy NWW n liczb,gdzie n jest naturalne i mniejsze od 20, a liczby te nie sa wieksze od 1000... problem jest taki,ze program "wylatuje" poza zakres jesli wezmiemy np 19 liczb pierwszych od 997 w dol. typ extended niewiele zmienia,bo mam tam funkcje mod i div, wiec jak zrobie round to i tak schodzi to do typu int64.. slyszalem,ze mozna to zrobic na stringach,ale nie mam pojecia jak:/ HELP!
moj kod:
program nww;
{$APPTYPE CONSOLE}
uses
SysUtils;
type tablica = array of integer;
var t:tablica;
i,n:integer;
a,b,c,x:int64;
v:string;
begin
repeat
writeln('podaj z ilu liczb chcesz obliczyc NWW');
writeln('(podana liczba musi byc liczba naturalna i ma zawierac sie w przedziale <1;19>)');
readln(v);
n:=StrToIntDef(v, -1);
until (n>0) and (n<20);
setlength (t,n);
for i:=0 to n-1 do
begin
repeat
writeln('podaj ',i+1,' liczbe');
writeln('(liczba musi byc naturalna i ma zawierac sie w przedziale (1,1000))');
readln(v);
x:=StrToIntDef(v, -1);
until (x>=1) and (x<1000);
t[i]:=x;
end;
c:=1;
for i:=0 to n-1 do
begin
a:=c;
c:=a*t[i];
while (t[i]<>0) do
begin
b:=t[i];
t[i]:=a mod t[i];
a:=b;
end;
c:=c div a;
end;
writeln('NWW podanych liczb wynosi ',c);
readln;
end.
dodam jeszcze,ze mam to na jutro na zaliczenie:/