Minulla on ohjelma joka kääntää vokaalit pieniksi kirjaimiksi. En ymmärrä mitä noissa funktioissa tapahtuu. Voisiko joku selittää mitä toLowercaseVowel ja isUppercaseVowel tässä tekee? Varsinkin tämä "if (isUppercaseVowel(c)) return(c+32);"
#include <stdio.h>
int isUppercaseVowel(char c);
char toLowercaseVowel(char c);
int main()
{
printf( "This program turns all the vowels into lowercase letters. \n\n");
printf( "Type a Sentence:\n");
char c;
while((c=getchar())!='\n')
printf("%c",toLowercaseVowel(c));
return 0;
}
int isUppercaseVowel(char c)
{
if((c=='A')||(c=='E')||(c=='I')||(c=='O')||(c=='U')||(c=='Y')) return 1;
else return 0;
}
char toLowercaseVowel(char c)
{
if (isUppercaseVowel(c)) return(c+32);
else return c;
}Näyttäisi nopealla lukaisulla ja c-kieltä taitamattoman silmään, että ascii-merkistössä liikutaan 32 merkkiä eteenpäin, jolloin arvatenkin osutaan isolla kirjoitetun merkin "pieneen" versioon.
Koodirimpsu siis menee kirjoitetun tekstin lävitse, ja etsii isolla kirjoitettuja merkkejä (vokaalit), jotka se muuntaa pieniksi.
edit:
nopeampi tapa tarkastella koodia, on muuntaa sitä, eli kokeilepa vaikkapa muuntaa c+32 muotoon c+33, ja katso mitä tapahtuu.
C:ssä myös charrit ovat periaatteessa vain numeroita kuten esimerkiksi intitkin.
Tuossa koodi joka demonstroi charrejen toimintaa:
char a = 'a';
int b = 97;
printf("%c", a); //tulostaa a
printf("%c", b); //tulostaa a
printf("%i", a); //tulostaa 97
printf("%i", b); //tulostaa 97Tästä löytyy vielä ASCII-taulukko, jonka avulla voit "muuttaa" numerot kirjaimiksi ja toisinpäin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.