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 97
Tä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.