Edit i program, któy sprawdza czy słowa mają samogłoski

Odpowiedz Nowy wątek
2006-11-14 10:09

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

0

Witam,

Piezę program z polem edycyjnym, polem memo i dwoma przyciskami (Koniec i Licz). Po naciśnięciu przycisku Koniec program ma kończyć działanie, zaś po naciśnięciu przycisku Licz program ma wypisać w polu memo wszystkie te słowa z pola edycyjnego, które na każdej nieparzystej pozycji mają samogłoskę. Przez słowo rozumiemy w tym zadaniu maksymalny ciąg znaków różnych od spacji.
Narazie kombinuję dla jednego słow jak to zrobić i mam coś takiego:

linia:=Edit1.Text;
i:=1;
while not (linia[i]=' ') do
begin
slowo:=slowo+linia[i];
inc(i);
end;
j:=1;
repeat
if slowo[j] in ['i', 'y', 'e', 'a', 'o', 'u', 'ą', 'ę'] then
begin
inc(j);
jest:=true;
end
else
begin
break;
jest:=false;
End;
until j>=length(slowo);
if jest=true then label1.caption:=slowo;

Ale coś wynik nie jest poprawny.

Może mi ktoś udzielić jakiśwskazówek - będę bardzo wdzięczny.

Pozdrawiam
Tpokala

Pozostało 580 znaków

2006-11-14 10:57

Rejestracja: 16 lat temu

Ostatnio: 1 rok temu

0

Ja bym to tak rozwiązał:


   linia:=Edit1.Text;
  i:=1;
  while not (linia[i]=' ') do
    begin
      slowo:=slowo+linia[i];
      inc(i);
    end;

    j:=1;
    jest := FALSE;
    repeat
      if slowo[j] in ['i', 'y', 'e', 'a', 'o', 'u', 'ą', 'ę'] then
      begin
        jest := TRUE;
      end;
      inc(j);
    until j>=length(slowo);
  if jest=true then label1.caption:=slowo;

Ale nie jestem pewien czy o to dokładnie Ci chodziło


Pozostało 580 znaków

2006-11-14 11:08

Rejestracja: 13 lat temu

Ostatnio: 8 lat temu

0
Mick napisał(a)

Ja bym to tak rozwiązał:

linia:=Edit1.Text;
i:=1;
while not (linia[i]=' ') do
begin
slowo:=slowo+linia[i];
inc(i);
end;

j:=1;
jest := FALSE;
repeat
  if slowo[j] in ['i', 'y', 'e', 'a', 'o', 'u', 'ą', 'ę'] then
  begin
    jest := TRUE;
  end;
  inc(j);
until j>=length(slowo);

if jest=true then label1.caption:=slowo;


> Ale nie jestem pewien czy o to dokładnie Ci chodziło

To też nie działa tak jak powinno

Pozostało 580 znaków

2006-11-14 11:34

Rejestracja: 16 lat temu

Ostatnio: 10 lat temu

0
  1. Pętla, którą zrobiłeś zwróci wartość TRUE dla wyrazów, które kończą się samogłoską a wartość FALSE dla wyrazów, które kończą się spółgłoską (przeanalizuj sobie krok po kroku jej działanie dla przykładowych wyrazów). Musisz zmienić warunek opuszczenia pętli, poza tym jak już znajdziesz pierwszą samogłoską dalsze szukanie w tym wyrazie nie ma sensu, więc będzie to również optymalniejsze.

  2. Zainteresuj się funkcją Pos

Pozostało 580 znaków

2006-11-14 15:54

Rejestracja: 13 lat temu

Ostatnio: 6 lat temu

0

Może to bedzie pomocne

procedure TForm1.Button1Click(Sender: TObject);
const
 s :string = 'jakikolwiek string zawierający samogłoski dgffgfdg';
var
 StringList :TStringList;
 i, j       :Byte;
 IsAble     :Boolean;
begin
 Memo1.Clear();
 StringList := TStringList.Create();
 with StringList do
  begin
   Delimiter := ' ';
   DelimitedText := s;
   for i := 0 to Count-1 do
    begin
     IsAble := False;
     for j := 1 to Length(Strings[i]) do
      if (UpCase(Strings[i][j]) in ['A','Ą','E','Ę','I','O','Ó','Y']) then
         if Odd(j) then
            begin
             IsAble := True;
             Break;
            end; // if Odd...
     if IsAble Then Memo1.Lines.Add(Strings[i]);
    end; // for i...
  end; // with StringList do
end; // Button1Click

<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

Odpowiedz

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