Starałem się napisać program liczący NWW n liczb. Na początku użytkownik wprowadza ilość liczb z których ma policzyć NWW, później pyta się wartość każdej liczby.
Liczb będzie max. 100 000. Skrypt jest chyba zrobiony dobrze - nie optymanie czy ekonomicznie, ale powienien zadziałać:
Program:
Kod: Zaznacz cały
program run;
var
ilosc:integer;
l:integer;
l2:integer;
nww:integer;
a:array[1..100000] of integer;
dzielniki:array[1..100000] of shortint;
BEGIN
readln(ilosc);
FOR l:=1 TO ilosc DO readln(a[l]);
{NWW start}
for l:=1 TO ilosc DO
Begin
for l2:=1 TO ilosc DO
Begin
while a[l] MOD l2 = 0 DO
Begin
a[l] := a[l] / l2; {Linia w której jest błąd, znak 21 to znak zaznaczony na czerwono}
dzielniki[l2]:=1;
End;
End;
End;
nww:=1;
for l:=1 TO ilosc DO
Begin
if dzielniki[l]=1 THEN nww:=nww*l;
End;
{NWW end}
END.
run1.pas(22,21) Error: Incompatible types: got "Extended" expected "SmallInt"
Jakby ktoś mógł mi wytłumaczyć o co chodzi temu FPC to byłbym wdzięczny - za jakiś szybszy sposób wyliczenia NWW w pascalu dla takiej tablicy z nieokreśloną ilością elementów też się nie pogniewam
