Mássalhangzó, magánhangzó és betű számláló Pascalban?
Sziasztok!
Egy olyan programot kellene írnom Pascalban, ami kér egy szöveget és kiírja hogy mennyi mássalhangzó és magánhangzó található a szövegben, aztán megkérdezi hogy milyen betű számaira vagyunk kíváncsiak és azt is kiírja.
Nos, mégis hogy nézni ki ez a program? A mássalhangzókhoz és magánhangzókhoz tömböt kellene használnom?
Ma mindenki ezt a leckét kapta?
Hihetetlen, hogy ezen a feladaton ennyien el tudtok akadni.
Én ezt a megoldást alkottam (nem vitatom hogy van-létezhet jobb-egyszerűbb-elegánsabb megoldás is.
A probléma vele, hogy az ékezetes karaktereket nem tudja megszámolni, mert - valószínűleg - a lowercase elszúrja őket...
Gondoltam, beleírom a betűszámlálást is, a magánhangzó és mássalhangzó mellett...
Lehet, hogy konstansként elegánsabb lett volna definiálni a betűket.
program maganhangzo_massalhangzo_betuszamlalo;
var
maganhangzo, massalhangzo, szoveg : string;
maganhangzos:array[1..14] of byte;
massalhangzos:array[1..21] of byte;
i, j, k : byte;
betu : char;
betus : byte;
begin
betus := 0;
for j := 1 to 14 do
maganhangzos[j]:=0;
for k := 1 to 21 do
massalhangzos[k]:=0;
maganhangzo:='áíűőüöúóéaeiou';
massalhangzo:='bcdfghjklmnpqrstvwxyz';
write('kerem a szoveget : ');
ReadLn(szoveg);
Write('Kérem a megszámolandó betűt : ');
ReadLn(betu);
for i := 1 to length(szoveg) do
begin
for j:=1 to 14 do
if (LowerCase(szoveg[i])=maganhangzo[j]) then inc(maganhangzos[j]);
for k:=1 to 21 do
if (LowerCase(szoveg[i])=massalhangzo[k]) then inc(massalhangzos[k]);
if (LowerCase(szoveg[i])=LowerCase(betu)) then
inc(betus);
end;
WriteLn;
WriteLn('A szovegben ',betu,' ',betus,' alkalommal fordult elo.');
WriteLn('magánhangzók: ');
for j:=1 to 14 do
if maganhangzos[j]>0 then writeln(maganhangzo[j],'betű: ',maganhangzos[j],' alkalommal fordult elő.');
writeln('Mássalhangzók:');
for k:=1 to 21 do
if massalhangzos[k]>0 then writeln(massalhangzo[k],' betű: ',massalhangzos[k],' alkalommal fordult elő.');
end.
A program utolsó sora elé:
end.
írd be: ReadLn;
Talán az lehet a probléma, hogy a kimenetet nem látod megjelenni?
Ezt a ReadLn megoldja.
LowerCase az kisbetűsíti az adott betűt, tehát hiába írják be nagybetűvel, kisbetűre alakítja, olyan célból, hogy bármilyen módon is írják be, megtalálja az adott betűt (ne kelljen két abc, csak egy).
inc megnöveli az értékét a változónak, ugyanolyan mintha azt írnád hogy pl. i:=i+1;
Az inc gyorsabb.
Hasznos segédletet találsz itt:
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!