Kezdőoldal » Számítástechnika » Programozás » Ezt hogyan kell megcsinálni?

Ezt hogyan kell megcsinálni?

Figyelt kérdés

Írnom kell két függvényt. Az egyiknek az a feladata, hogy megállapítsa egy karakterről, hogy magánhangzó-e. A másiknak azt kéne csinálnia, hogy kap egy sztringet és abban megszámolja, hogy hány magánhangzó van. De fogalmam sincsen, hogy hogyan csináljam. Itt van a másik, már elkészült függvény:

int is_vowel(char c) {

char vowels[] = "aeiou";

c = lower(c);

for (int i = 0; i < 5; ++i)

if (vowels[i] == c)

return 1;

return 0;

}


2021. nov. 2. 11:15
 1/1 anonim ***** válasza:
63%

a másik függvényed egy karakter tömböt(stringet) fog várni. A visszatérési értéke pedig egy int lesz(a magánhangzók száma):

int count_vowels(char * str)


A függvény törzsében biztosan fog kelleni egy változó, amiben összeszámolod, hogy hány magánhangzó van, ezt érdemes kezdetben nullára állítani:

int count = 0;


Ezek után végig kell menni a string összes betüjén. Mivel a string csak egy karakter tömb(ugyanolyan, mint a fenti is_vowel-ben a vowels), ezért simán csak indexeled és megkapod a megfelelö betüt. A ciklus nullától indul, mivel a string elsö karaktere a 0. indexen van, egyesével lépked, mivel minden betüt meg akarsz vizsgálni:

for(int i = 0; ???; i++)


A feltétel egy kicsit trükkös: az elején még nem feltétlenül tudod a string hosszát. Azt kell tudni a c-ben a stringekröl, hogy a memóriában úgy tárolódnak, hogy a legutolsó byte értéke 0. Ez azt jelenti, hogy ha pl csinálsz egy ilyen változót:

char * str = "abc", akkor abból nem egy 3 elemü tömb lesz, hanem 4 elemü:

[97, 98, 99, 0]

A 97, 98, 99 az a, b és c betük ascii kódjai, a végén lévö 0-t a fordító magától teszi oda azért, hogy tudjad a programodból detektálni, hogy hol a string vége.


Tehát a ciklusod valahogy így fog kinézni:

for(int i = 0; str[i] != 0; i++)


Ennek a ciklusnak a belsejében meg kell hívnod a már megírt függvényedet. A paramétere a stringed 'aktuális' karaktere (tehát str[i]). A visszatérési érték alapján(tehát, hogy magánhangzó-e vagy sem) növelni kell a count változó értékét egyel.


Egyébként az is_vowel implementációs sajátossága miatt(0-t ad vissza, ha nem magánhangzó, 1-et ha igen) megspórolhatod az elágazást, és a counthoz direktbe hozzáadhatod a visszatérési értéket:

count += is_vowel(str[i]);

2021. nov. 2. 12:32
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!