[pascal] zadanie, co mam źle?

0

Witam mam taki o to program i nie mam pojęcia co w nim jest źle... wyskakują błędy
untitl1.pas(3,2) Error: Illegal expression
untitl
1.pas(3,2) Error: Illegal expression
untitl~1.pas(3,2) Fatal: Syntax error, ; expected but identifier PLIK found

Jestem kompletnym lamerem ale ten program jest ważny. Czy mógł by ktoś mi tutaj poradzić co mam źle ?

uses crt;{lub uses wincrt;}


var
 plik:text;
 nazwa,wyraz,linia:string;
 i,j,ilosc:integer;
 jest:boolean;

procedure szukaj(zdanie:string);
begin

for i:=1 to length(zdanie) do
  begin
  if upcase(zdanie[i])=upcase(wyraz[1]) then
    begin
      jest:=true;
      for j:=1 to length(wyraz) do
        begin
         if upcase(zdanie[i+j-1])<>upcase(wyraz[j]) then jest:=false;
        end;
      if jest=true then ilosc:=ilosc+1;
    end;
  end;

end;



begin
Writeln('Program wyszukuje ilosc wystopien danego ciagu znakow w pliku textowym.');
write('Podaj nazwe pliku  : ');readln(nazwa);
write('Podaj wyraz        : ');readln(wyraz);

ilosc:=0;

assign(plik,nazwa);
   {$i-}
reset(plik);
   {$i+} if ioresult<>0 then begin writeln('Blad otwarcia pliku ! - KONIEC');readln;halt;end;
while not eof(plik) do
 begin
  readln(plik,linia);
  szukaj(linia);
end;
close(plik);
writeln('Podany ciag znakow w pliku wystapil ',ilosc,' razy.');
readln;
end.





</quote>
0

Pod czym kompilujesz to po pierwsze, bo zarowno pod Delphi jak i Trubo Pascalem 7.0 program się prawie
dobrze kompiluje. Jest tylko warn o tym że zmienne do pętli powinny być lokalne. Poza tym słyszałes o tak
przydatnej rzeczy jak formatowanie kodu? Poniżej masz poprawiony kod, który wygląda, jak należy. A inna
sprawa że ten kod można uprościć używając funkcji Pos. Poza tym program zliczy słowo tylko jeśli to będzie
na samym początku linijki. Także na przykład dla tego kodu if już nie będzie zliczone, ale może tak chcesz.

program project2;

{$APPTYPE CONSOLE}

var
  Plik : Text;
  Jest : boolean;
  Ilosc : integer;
  Nazwa, Wyraz, Linia : string;

procedure Szukaj(Zdanie : string);
var
  I, J : integer;
begin
  for I := 1 to Length(Zdanie) do
  begin
    if UpCase(Zdanie[I]) = Upcase(Wyraz[I]) then
    begin
      Jest := True;
      for J := 1 to Length(Wyraz) do
      begin
        if UpCase(Zdanie[I + J - 1]) <> Upcase(Wyraz[J]) then
          Jest := False;
      end;
      if Jest = True then
        Ilosc := Ilosc + 1;
    end;
  end;
end;

begin
  Writeln('Program wyszukuje ilosc wystopien danego ciagu znakow w pliku textowym.');
  write('Podaj nazwe pliku  : ');
  Readln(Nazwa);
  write('Podaj wyraz        : ');
  Readln(Wyraz);
  Ilosc := 0;
  Assign(Plik, Nazwa);
{$I-}
  Reset(Plik);
{$I+}
  if IOResult <> 0 then
  begin
    Writeln('Blad otwarcia pliku! KONIEC.');
    Readln;
    Halt;
  end;
  while not EOF(Plik) do
  begin
    Readln(Plik, Linia);
    Szukaj(Linia);
  end;
  Close(Plik);
  Writeln('Podany ciag znakow w pliku wystapil: ', ilosc, ' razy.');
  Readln;
end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1