Dzielenie zdania na słowa - przejście do kolejnego elementu tablicy

0

Mam problem z przejściem do kolejnego elementu tablicy, nie wiem jaki dać warunek.
Program wczytuje zdania, wpisuje pojedyncze zdania do tablicy, do pozycji kropek, następnie każde to pojedyncze zdanie dzieli na słowa do pozycji spacji. Program działa do pierwszego elementu tablicy gdzie są pojedyncze zdania. Nie wiem jaki dac warunek i gdzie, zeby po skonczeniu pierwszego elementu pierwszej tablicy przeszedł do drugiego. Ktoś ma jakiś pomysł i pomoże ?

Poniżej kod. Trochę chaotyczny, ale myślę, ze zorientujecie się o co chodzi.

 program project1;

uses crt;

var zdanie:string;
    i,licznik, licznik2:byte;
    tablica,tablica2 : array[1..20] of string;
    spacja,kropka : Integer;

begin
    Writeln('Wpisz teraz jakies zdanie i nacisnij ENTER:');
    writeln;
    readln(zdanie);
    licznik:=1;
        kropka:=Pos('.', zdanie);
    while (kropka<>0) do
    begin
       tablica[licznik]:=Copy(zdanie,1,kropka-1);
        licznik:=licznik+1;
        kropka:=kropka+1;
        Delete(zdanie,1,kropka);
        kropka:=Pos('.',zdanie);
end;

      licznik:=1;
      spacja:=Pos(' ',tablica[1]);
    
      writeln(tablica[1]);

      licznik2:=1 ;

              while (spacja<>0) do
              begin
            
                 tablica2[licznik2]:=Copy(tablica[licznik],1,spacja-1);
                 licznik2:=licznik2+1;
                 Delete(tablica[licznik],1,spacja);
                 spacja:=Pos(' ',tablica[licznik]);

end;

for i:=0 to 20 do
        writeln(tablica2[i]);

        readln;
end. 
0

Trochę chaotyczny, ale myślę, ze zorientujecie się o co chodzi.

Nie i nawet nie zamierzam myśleć o patrzeniu na ten kod.
Napisz go po ludzku, z podziałem na funkcje i procedury...

0

No i dodatkowo zapoznaj się z procedurą Inc;

PS. Mam taką funkcję gotową, która wykorzystuje wskaźniki do przeszukiwania łańcucha i poszczególne "słowa" wstawia do macierzy, ale nie pokażę Ci jej dopóki nie zobaczę jak to po swojemu wykombinowałeś :]

0

Tylko, ze to ma być jedna funkcja właśnie dzielenia zdań na słowa, wiec nie widze sensu na rozdrabnianie tego. Zrobie z tego funkcje jak już będzie działać, żeby się nie pogubić i nie zepsuć tego co juz jest :P Mam pomysł, zeby zwiększać licznik jeżeli ilosc znaków w pierwszym elemencie tablicy będzie mniejsza niz np 10 znaków. Tylko wtedy jeśli będą krótkie słowa to przejdzie do następnego elementu, nie dzieląc tych krótkich słów. Mało uniwersalne.

0

Nie musisz aż tak kombinować - wystarczą Ci dwie zmienne, które przechowywać będą indeksy znaków separatora, przed i po słowie, a także funkcje Pos i Copy do kopiowania słów; Możesz też przeszukiwać za pomocą wskaźników na znaki i wykorzystać procedurę Move do kopiowania wartości słów.

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