Wyszukiwanie zadanej litery w tekscie

0

Witam. Chciałbym napisać program który na wejściu pobiera od użytkownika jakiś tekst i w tym teksie znajduje wystąpienie zadanej literki i wypisuje ile razy ta literka występuje w danym tekście (słowie). Moje dokonania mają się tak jak poniżej. Program co prawda działa ale nie tak jak bym chciał. Proszę o pomoc...!?

program Literki;
var
 i,b: Integer;
 a,d: char;
 tab: array[0..10] of char;
begin
   i:=0;
   b:=0;
   for i:=0 to 10 do
     begin
      writeln('Podaj tekst:');
      readln(tab[i]);
      writeln('szukana literka to:');
      readln(d);
      a:=tab[i];
      if a = d then
      begin
      b:=b+1;
      writeln('Litera : ', d , '  wystepuje razy: ',i);
       end;
      break; 
     end;
   
end.
1

Program co prawda działa ale nie tak jak bym chciał.

Jak chciałbyś, aby działał?

0
Patryk27 napisał(a):

Jak chciałbyś, aby działał?

Chciałbym aby program zliczał dokładnie wystąpienie danej literki w tekście.

1

To naprawdę w ogóle jakoś działa?

  1. Nazewnictwo zmiennych tak trudno nazwać zmienną np. "text"
  2. Po co w pętli pobierasz tekst i szukany znak?
  3. Zmienna tab jest tablicą a szukany tekst powinien być typu string
  4. Pętla powinna być for i:=1 to Length(text) do
  5. Wyświetlenie wyniku wyszukiwania powinno być poza pętlą
    Tyle uwag gotowca nie dam!
1

Chciałbym aby program zliczał dokładnie wystąpienie danej literki w tekście.

Oke, no to dawaj - napiszmy ten program razem, tylko powoli :-)

Rozkładając problem na czynniki pierwsze, musimy:

  1. Wczytać od użytkownika tekst.
  2. Wczytać od użytkownika literę.
  3. Policzyć liczbę wystąpień litery w tekście.

Zacznijmy zatem od punktu pierwszego: napisz program, który pobierze od użytkownika tekst i umieści go w zmiennej; podeślij w poście kod i będziemy myśleć dalej.

0

Gotowca mi nie potrzeba.. Chodziło mi głownie o ten kawałek kodu w punkcie 4. Teraz już dam sobie radę! Dziękuję za odpowiedź i życzę miłego dnia!

Patryk27. Bardzo dziękuję za chęć pomocy ale ten program muszę napisać zupełnie sam! Miłego dnia!

3

W razie czego możesz zaskoczyć prowadzącego znajomością metody CountChars:

uses
  SysUtils;
var
  Line: String;
  Letter: Char;
begin
  Write('Enter the text: ');
  ReadLn(Line);

  Write('Enter the letter: ');
  ReadLn(Letter);

  Write('The letter "', Letter, '" appears ', Line.CountChar(Letter), ' times.');
  ReadLn();
end.

Ale to tak w ramach ciekawostki. Nie no, żartuję – ćwicz pętle. ;)

0

No teraz program działa tak jak tego chciałem i jest o wiele krótszy! Pytanie Tylko Czy jest Poprawny?

program Literka_Length;
Var 
  Text,Pos: String;
  I,A: Integer;
begin
  Writeln('Podaj text:');
  readln(Text);
  Write('Podaj literke do wyszukania:');
  readln(Pos);
  for i:=1 to Length(Text) do
    if Pos = Text[i] then
      A:= A + Length(Pos);
   WriteLn('Literka   ',Pos, '  wystepuje:',A,' razy');
end

3

Miał liczyć wystąpienie znaku więc zmienna zawierająca szukany znak powinna być typu Char i nie nazwał bym jej pos nawet ch będzie lepsze.
Żeby zliczyć wystąpienia to po spełnieniu warunku if ch = Text[i] thenpowinieneś dodawać 1 do dotychczasowej liczby wystąpień (niby jak jest Length(Pos) to też doda 1 ale to bez sensu). Nazwij zmienną A po ludzku np. count i użyj Inc(count) lub count:= count + 1. Na początku programu przypisz zmiennej count wartość 0, mogło by się wydawać, że nie konieczne ale na pewno poprawi czytelność programu poza tym strzeżonego...

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