Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program w Pascalu znajdujący najw powt. się liter i ich zam.

czarnys69 20 Sty 2009 23:22 699 2
  • #1 20 Sty 2009 23:22
    czarnys69
    Poziom 9  

    Witam! Mam do napisania program w którym:
    Wpisujemy dowolny tekst (bez polskich liter) i program ma sprawdzić której litery jest najwięcej w tekście i te litery których najwięcej ma zamienić na duże litery w tym tekście!

    Mógłby ktoś mi w tym pomóc? Nigdy nie miałem styczności z tego typu programem.

    Pozdrawiam serdecznie i dziękuje za wszelką pomoc;)

    0 2
  • #2 21 Sty 2009 12:06
    BoskiDialer
    Poziom 34  

    Za pomocą sortowania kubełkowego (a właściwie tylko zliczania) łatwo policzysz ilość wystąpień każdego znaku. Potem tylko znaleźć ten, który występuje najczęściej, przeanalizować tekst jeszcze raz, ale zamieniając najczęstszy znak na duży. Ze względu na źródło (wejście), należało by wczytać tekst do ciągu znaków (string, nie piszesz nic o możliwości podania tekstu wieloliniowego), opcjonalnie zamienić wszystkie znaki na małe (nic nie piszesz o tym, czy na wejściu już są małe), zliczenie i wybranie najczęściej występującego znaku (lub najczęściej występującej litery, jeśli mogła by wystąpić sytuacja, że spacja była by częściej niż każda litera).

    0
  • #3 21 Sty 2009 14:30
    ed-ek
    Poziom 34  

    Możesz zrobić jak przedstawiłem. Jednak gdy rózne litery wystąpią taką samą maksymalną ilość razy, na duże litery zamieniona zostaną jedne z nich. Pozostawiam Ci rozwiązanie jak to ominąć.

    Code:

    uses crt;
    var ch,chm:char;
        i,mx:integer;
        il_max:array[0..100]of integer;
        tab_ch:array[0..1000]of char;
      begin
      clrscr;
      i:=0;mx:=0;
      writeln('pisz tekst,koniec: press ENTER');
       repeat
       ch:=readkey;
       tab_ch[i]:=ch;
       if (ord(ch)>=97)and(ord(ch)<=122) then begin
       il_max[ord(ch)-97]:=il_max[ord(ch)-97]+1;
       if il_max[ord(ch)-97]>mx then begin
       mx:=il_max[ord(ch)-97];chm:=ch;end;end;
       i:=i+1;
       write(ch);
       until ord(ch)=13;
      writeln;
      writeln(chm,' wystepuje najwiecej ',mx,' razy');
      i:=0;
       repeat
       ch:=tab_ch[i];
       if ch=chm then ch:=UpCase(ch);
       write(ch);
       i:=i+1;
       until ch=#13;
      writeln;
      writeln('press any key');
      readkey;
      end.

    0