Witam.
Zrobiłam program który odczytuje z pliku cyfry i zapisuje je do tablicy char, do przecinka.
Potem zamienia zamienia je ORD - 48 i wkłada do tablicy byte. Przekształca je w liczbę mnożąc ostatnią x1, następną x10 i dodając do siebie. Na końcu sprawdza czy liczba jest liczbą pierwszą i je wypisuje.
Sęk w tym, że tylko mi się tak wydaje ;P
Pierwsza wersja odczytywała wszystko jako 208, po kilku ulepszeniach odczytuje jako 208 i 252 na zmianę (i już jest sporo rzeczy pozmienianych bezsensownie bo zwątpiłam ;P). Nie są to liczby pierwsze więc ostatecznie nie wychodzi nic.
Odkryłam, ze coś nie tak jest ze zmienna która liczy ile cyfr jest w tablicy. A Bardzo dużo od niej zależy.
Ładnie proszę o rzucenie okiem. Pewno jakiś głupi błąd zrobiłam. :)
O to kod:
(Żeby działał trza zrobi jakiś pliks.txt o treści mniej więcej "11,2,3,4,5,6,22,33,15,17," i ścieżke zmienić(
program liczpierw;
uses crt;
var i,j,s1,s2,s3,d,l,m,x:byte; s:char; tab:array[1..10] of char;
tab2:array[1..10] of byte; t:text;
BEGIN;
clrscr;
assign(t,'C:\pliks.txt');
reset(t);
s3:=0;
repeat
l:=0;
repeat
read(t,s);
if s<>',' then tab[i]:=s;
l:=l+1;
until s<>',';
for i:=1 to l do begin;
x:=ORD(tab[i])-48;
tab2[i]:=x;
end;
{for i:=1 to l do write(s);}
m:=1;
s2:=0;
for i:=l downto 1 do begin;
s2:=s2+tab2[i]*m;
m:=m*10;
end;
d:=0;
for i:=1 to s2 do begin;
if s2 mod i=0 then d:=d+1;
end;
if d=2 then begin;
s3:=s3+1;
{writeln(s3,' ',s2); to ostateczny wynik powinien być - s3 czyli ile jest tych pierwszych i s2 czyli te konkretne licbzy pierwsze z pliku}
end;
until EoF(t);
close(t);
readkey;
END.