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?
Én egyszerűsíteném a dolgot.
Nem kérik, hogy melyik betűből mennyi van.
A szövegen való iterálás közben lenne 1-1 számláló a kért számoknak, amit az iteráció előtt nullázok. Az iteráció közben amit talált, azt növeli egy if-es szerkezetben.
A végén kiíratnám a kért számokat.
Ha kell az is, melyik betűből mennyi van, akkor használnék tömb számlálót a betűkhöz. A 0. helyen B 1. helyen ... De ez a feladat ezt nem kívánja.
Egy tömböt a teljes ABC-re. Lehet külön számláló a msh, mgh-nak if-ben.
Ha kell külön betűcsoportokról is kérdés, akkor utólag azon iterálok végig. A bekért betűből lehet a tömb n. elemét lekérni, ami az ABC egyik betűjéhez tartozó számlálót.
Csinálj egy halmazt a magánhangzóknak. Ha a vizsgált betű benne van a halmazban, azaz eleme annak, akkor növeled a magánhangzó számlálót.
program mgh;
Var s:string;
I:integer;
Begin
Readln(s);
For i:=1 to length(s) do
If lowercase(s[i]) in ['a','e','i','o','u'] then inc(maganhangzo);
Writeln('maganhangzok: ',maganhangzo);
End.
Ha minden betű számossága le van tárolva egy tömbbe, akkor abban benne van a mgh és az msh is. De ha csak egy-egy előre definiált karaktercsoport (msh, mgh, szám) kell, ezeknek külön létrehozhatsz számlálót és kinullázni, majd esetenként növelni. De utólag is ki lehet őket szedni.
Tömbben is lehet tárolni a karaktereket, hogy 0-25ig a betűk a-z, 26-35-ig a számok 0-9-ig.
tömb létrehozása és kinullázása: karakterek[('z' - 'a') + ('9' - '0')]
iteráció a bemeneti szövegen karakterenként
diff = 0
ha int(ch) >= 'a' és int(ch) <= 'z', akkor diff = 'a' /* kis betűk */
ha int(ch) >= 'A' és int(ch) <= 'Z', akkor diff = 'A' /* nagy betűk */
ha int(ch) >= '0' és int(ch) <= '9', akkor diff = '0' és num++ /* számok */
ha (diff > 0), akkor karakterek[ch - diff]++
ha (diff == 'a' vagy diff == 'A'), akkor {
megnézni, hogy ch mássalhangzó-e (fentebb már említett módon), ha igen, {akkor növelni az msh számlálót} különben {növelni az mgh számlálót}
}
Innentől kezdve megvan a msh, mgh, num számláló és megvannak a különböző betűkhöz rögzített különböző számlálók egy tömbben.
Ez már tényleg a megoldás szinte.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!