Pascal prekladač zadanie

Programovacie jazyky, rady, poradňa...
jojo44
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 29 dec 2006, 18:40
Bydlisko: Bratislava

Pascal prekladač zadanie

Príspevok od používateľa jojo44 »

Zdravím páni,
potreboval by som pomôcť s prekladačom do šifrovanej reči "papepipopu" t.j. napríklad zo slova dobre to spraví dopodrepe.
Takže princíp je ten, že program rozloží slovo na hlásky po tom nájde v slove písmeno a,e,i,o,u a ku každému priradí pa,pe,pi,po,pu. Keby napíšem len if príkazy pod seba tak mi to robí pre každé slovo samostatné takže by som ich tam mal 5x jedno a v každom len pa alebo pe atď... treba to nejak spraviť cez príkaz "case" aby to našlo dokopy a vypísalo len jedno slovo celé už v preklade. Dostal som sa len po case a tam som sa zasekol neviem čo ďalej. Tak ak by som Vás mohol poprosiť o pomoc a niekto keby nad tím porozmýšľal bol by som Vám moc vďačný ;)

Tu je časť toho programu:

Kód: Vybrať všetko

program prekladac;
uses crt;
var slovo,po_hlaskach:string;
    i,dlzka:integer;
    vyraz:string;

begin
clrscr;
writeln ('Zadaj slovo');
readln(slovo);
dlzka:=length(slovo);
po_hlaskach:='';

(*
for i:=1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='o' then po_hlaskach:=po_hlaskach+'po';
        end;
*)

case vyraz of

   'a': for i:= 1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='a' then po_hlaskach:=po_hlaskach+'pa';
        end;
   'e': for i:= 1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='e' then po_hlaskach:=po_hlaskach+'pe';
        end;
   'i': for i:=1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='i' then po_hlaskach:=po_hlaskach+'pi';
        end;
   'o': for i:=1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='o' then po_hlaskach:=po_hlaskach+'po';
        end;
   'u': for i:=1 to dlzka do
        begin
         po_hlaskach:=po_hlaskach+copy(slovo,i,1);
         if copy(slovo,i,1)='u' then po_hlaskach:=po_hlaskach+'pu';
        end;

end;
writeln(po_hlaskach);
readln
end.
To čo je v komentári je len pre jedno písmeno...tak to treba spraviť ako som písal vyššie pre všetky a neviem stým pohnúť.

Ďakujem za skorú pomoc :)
P.S.:Potreboval by som to minimálne do konca budúceho týždňa.
Ak by niekto nerozumel tomu čo som napísal o čo tam ide a chcel by pomôcť kľudne ss alebo tu v topicu napíšte.
:new04: :new04:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pascal prekladač zadanie

Príspevok od používateľa audiotrack »

tým case-om si to zbytočne komplikuješ, ten cyklus sa mi viac páči len ho uprav takto nejak:

Kód: Vybrať všetko

if (lowercase(copy(slovo,i,1)) in znaky) then po_hlaskach:=po_hlaskach+'p'+copy(slovo,i,1);
kde znaky bude enum, čiže niečo ako var znaky: ('a','e','i','o','u'); Neviem presne ako sa v pascale zapisuje IN, ak to nejde tak tam bude viac podmienok. Hádam som ti načrtol aspoň logiku
jojo44
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 29 dec 2006, 18:40
Bydlisko: Bratislava

Re: Pascal prekladač zadanie

Príspevok od používateľa jojo44 »

Takže ak správne chápem premennej znaky mám priradiť a,e,i,o,u, potom len doplniť do toho prvéhu if-u, že v tom rozloženom slove ich má hľadať potom pridá to čo tam má byť, len keď dám do var-u znaky:('a','e','i','o','u'); vypíše error hneď za prvou zátvorkou... "identifier" expected but "const char" found...
Nejak začínam byť mimo :?

//autoeditácia príspevku (13 Máj 2010, 7:14)
Ale skôr by som bol radšej keby mi niekto mohol pomôcť aby to bolo s case-om cez ten vravel profesor, že to máme spraviť :roll:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pascal prekladač zadanie

Príspevok od používateľa audiotrack »

neviem ako sa v pascale robí enum, skús teda znaky:enum('a',...
každopádne išlo o logiku, nie o to aby si to zkopíroval lebo s pascalom som dlho nerobil. Podstatou je že nájdeš nejaký znak z tej množiny samohlások, a pridáš pre tento znak p. Ty si to predtým v tom ife robil iba pre o. Ak to ale spravíš tak ako ja, že pripojíš p a potom ten znak z copy funkcie, tak nemusíš dávať napevno 'po' a teda to nebude na 5 podmienok
jojo44
Medium Expert
Medium Expert
Príspevky: 110
Registrovaný: 29 dec 2006, 18:40
Bydlisko: Bratislava

Re: Pascal prekladač zadanie

Príspevok od používateľa jojo44 »

teda musím niekde naštudovať ako to zapíšem tú množinu, keďže niesom až taký odborník na pascal :)
A dík teda za tú logiku pripadá mi to odosť ľahšie ako cez ten case.
k+
Napísať odpoveď