Witam, miałem program który zlicza liczbę znaków w podanym zdaniu, np. ala ma kota. Wynik działania programu był taki (screen1):
Następie podjąłem próbę stworzenia programu, który nie wyświetla niepotrzebnie kolejny raz tego samego znaku w wyniku, tylko podaje go tak (screen2):
I tu dochodzę do sedna, nowy program wyświetla znaki tak jak screenie 2, ale tylko na moim komputerze, po skompilowaniu kodu na dwóch innych komputerach program wyświetla wynik tak jak na screenie 1. Co więcej, bez użycia kompilatora, sam plik .exe wyświetla na moim komputerze wynik tak jak na screenie 2, a na pozostałych działa tak jak na screenie 1.
Czy ktoś orientuje się o co może chodzić? Jeżeli to może mieć jakikolwiek wpływ to korzystam z Windows 7, a na tamtych komputerach zainstalowany jest Windows 8. Również robiłem plik .exe na tamtych komputerach i uruchamiałem u siebie, program działał tak jak na screenie 2, a tam jak na screenie 1.
Kod tego programu (Free Pascal IDE):
program zdanie;
uses crt;
type lancuch=string[40];
procedure ileliter();
var zdanie, sprawdz: lancuch;
i, j, c, n, powtarzasie: integer;
begin
writeln('Podaj zdanie:');
readln(zdanie);
writeln();
for i:=low(zdanie)+1 to ord(zdanie[0]) do
begin
n:=0;
powtarzasie:=0;
for j:=low(zdanie)+1 to ord(zdanie[0]) do
begin
if zdanie[i]=zdanie[j] then n:=n+1;
end;
{--- petla: zapisz czy dany znak jest juz w zbiorze ---}
for c:=low(sprawdz)+1 to ord(sprawdz[0]) do
begin
if zdanie[i] = sprawdz[c] then
powtarzasie:=powtarzasie+1;
end;
{--- if: wypisz tekst, jezeli danego znaku nie ma w zbiorze ---}
if powtarzasie < 1 then
begin
if ord (zdanie[i])=32 then
writeln('spacja - ',n)
else
writeln('znak ',zdanie[i],' - ',n);
end;
sprawdz[i]:=zdanie[i]; //zbior dotychczas wykorzystanych znakow
end;
end;
begin
clrscr;
ileliter();
readln();
end.
wstawienie kodu do posta i obrazków do załączników
- @furious programming