Dobry den chtel jsem se zeptat mam priklad:Vytvorte program, ktery ze vstupniho souboru cte text slozeny z vet ukoncenych teckou. Slova ve vete jsou oddelena jednou nebo vice mezerami. Program vytiskne zadany text a pro kazdou vetu uvede pocet slov, z nichz se sklada.
Vytvoril jsem tohle ale nejak mi to blbne vsak zkuste nekdo kdo tomu rozumite si vytvorit txt s vetama.Ma to chyby ze musim na kazdy radek psat novou vetu jinak to bere jako jednu.Muzu dat maximalne tri vety pod sebe pak to dalsi nebere,nejak to blbne.Umel by to nekdo vyladit nebo rict kde je chyba?
program SlovaVeVete;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
vety:array[1..100] of integer;
soubor:text;
zn:char;
ps,i:integer;
veslove:boolean;
begin
writeln('Tento program zjisti pocet slov ve vete');
writeln('***************************************');
writeln;
writeln('Text souboru: ');
writeln('**************');
writeln;
assign(soubor,'a.txt');
reset(soubor);
veslove:=false;
ps:=0;
i:=0;
while not eof(soubor) do begin {delej dokud neni konec souboru}
read(soubor,zn); {cti znak ze souboru}
write(zn); {tiskni znak na obrazovku}
if (zn=' ') or (zn=chr(13)) or (zn=chr(10)) or (zn='.') then veslove:=false
else if not veslove then begin {jestlize veslove=true sem uz nevlezem}
veslove:=true; {sem se dostanem jen pri prvnich pismenech }
Inc(ps); {pri prvnim pismenu po mezere zvetsi pocet slov}
end;
if(zn=Chr(13)) then begin {jestli je konec vety ...}
inc(i); {zvetsi ukazatel pole..}
vety[i]:=ps; {uloz do pole pro vetu[i] hodnotu ps}
ps:=0; {nulovani pro dalsi vetu}
veslove:=false; {nejsme ve slove}
end;
end;
writeln;
for i:=1 to i do begin
writeln('Ve vete cislo ',i,' je slov: ',vety[i],'.');
end;
writeln;
writeln;
writeln('Konec - Enter');
writeln('*************');
readln;readln;
end.