Pascal Problem z Petla Repeat Until

Witam,

Otóż mam problem z pętla repeat until. Musze miec na jutro program w ktorym wpiszemy zdanie, potem  wybrana litere i otrzymamy liczbe tej litery(ile razy wystepowala)

np. wpiszemy ALA MA KOTA po czym litere A to program powie ze ta litera wystepowala w zdaniu 4 razy.

Prosze o szybka pomoc.

program abc;
uses Crt;
var zdanie:string;
var znak:char;
var i,litery:integer;


begin
   ClrScr;
   WriteLn('Napisz zdanie');
   ReadLn(zdanie);
   WriteLn('Napisz Litere ktora chcesz zliczyc');
   ReadLn(znak);
   
   Repeat
   if zdanie[i]=znak then
      begin
      litery:=litery+1;
      end;
   until litery<10;

   WriteLn('tej litery w tym zdaniu jest: ',Litery);
   ReadLn;
   end.

Nie inkrementujesz i (sprawdzasz non stop ten sam znak)

Twoja pętla główna jest na sztywno, powinieneś iterować tyle razy, ile liter jest w twoim zdaniu :slight_smile:

Poza tym wyniki będą z kosmosu kiedy wpiszesz zdanie krótsze niż 10 znaków.

Może użyj coś takiego zamiast pętli repeat.

for i:=0 to length(zdanie) do if zdanie[i]=znak then inc(litery);

Nie wiem czy nie popełniłem jakiegoś błędu mało znam pascala ale wygląda zgrabniej.

Mialem zrobic to w 2 petlach w for  i repeat. W for wszystko pieknie dziala tylko tutaj cos zwalilem…

Poprawilem petle jednak dalej cos nie dziala teraz wyglada to tak.

Program abc;
uses crt;
var zdanie:string;
var znak:char;
var i,litery:integer;

begin
   ClrScr;
   WriteLn('Napisz zdanie');
   readLn(zdanie);
   WriteLn('Napisz litere ktora chcesz zliczyc');
   ReadLn(znak);
   i:=1;
   litery:=1;
   Repeat
   if zdanie[i]=znak then
   litery:=litery+1;
   i:=i+1;
   until i<=length(zdanie);
   
   WriteLn('Liter w tym zdaniu jest: ',litery);
   ReadLn;
   end
repeat 
if zdanie[i]=znak then inc(litery);
inc(i);
until i=length(zdanie);

dzieki wielkie dziala :slight_smile: