// luenap.cpp - esimerkki yhden n„pp„imen painalluksen lukemisesta // // Lis„teht„v„ p„„teohjauksen 3 aluksi: // // Teht„vi„: // 1) Muuta ohjelma sellaiseksi, ett„ se kysyy // Oletko Tytt”,Poika,Mies vaiko Nainen (tpmN) > // ja tulostaa sen j„lkeen sopivan ilmoituksen t„st„. // // 2) Muuta ohjelmaa edelleen siten, ett„ se ohjelman // lopuksi ilmoittaa montako tytt”„/poikaa/miest„/naista // vastattiin. (Voi tulostaa my”s koko ajan sen hetkist„ // tpmn -lukum„„r„„) // #include #include #include #ifdef __TURBOC__ # define GETCH /* Sy”tt” Turbo-C:n mukaisesti. */ # include #endif #define MERKKI_ISOKSI 1 #define MYOS_PIENET 0 char lue_merkki(void) { /* Seuraava toimii mm. Turbo C:ss„: */ #ifdef GETCH char c; while ( 1 ) { /* Korjataan funktion„pp„in-vika */ c = getch(); if ( c != 0 ) return c; c = getch(); } #else /* Seuraava on standardin mukainen: */ char s[50]; fgets(s,50,stdin); return s[0]; #endif } char isoksi(char c) { if ( c<'a' ) return c; if ( c>'z' ) return c; return c-(char)('a'-'A'); } char odota_nappain(const char *kelpaavat, char oletus, int isot) { char painettu; do { while ( !(painettu=lue_merkki()) ); /* HUOM! korjaus! */ if (isot) painettu = isoksi(painettu); if ( oletus && ((painettu=='\n') || (painettu=='\r')) ) return oletus; } while ( kelpaavat && !strchr(kelpaavat,painettu) ); return painettu; } //------------------------------------------------------------------------- int jatketaan(void) { char c; cout << "Jatketaanko (K/e):" << flush; c = odota_nappain("KE",'K',MERKKI_ISOKSI); cout << c; return ( c == 'K' ); } //------------------------------------------------------------------------- void aanesysvalinta(void) { cout << "\n\n"; cout << "Onko ohjelmointi kivaa?\n"; cout << "\n"; cout << "Valitse:\n"; cout << " K = Kyll„\n"; cout << " E = Ei\n"; cout << " O = En Osaa sanoa\n"; cout << " :" << flush; } //------------------------------------------------------------------------- int main(void) { char painettu; do { aanesysvalinta(); painettu = odota_nappain("KEO",'K',MERKKI_ISOKSI); cout << painettu << "\n"; cout << "ˇ„nestit siis "; switch ( painettu ) { case 'K' : cout << "Kyll„"; break; case 'E' : cout << "Ei" ; break; case 'O' : cout << "Et osaa sanoa"; break; } cout << "\n"; } while ( jatketaan() ); cout << "Kiitos vastauksista! Hei hei!\n"; return 0; }