// 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 using namespace std; #include "dosout.h" #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 int c; while ( 1 ) { /* Korjataan funktionäppäin-vika */ c = getch(); if ( c != 0 ) return (char)c; c = getch(); } #else /* Seuraava on standardin mukainen: */ char s[50]; fgets(s,sizeof(s),stdin); return s[0]; #endif } char isoksi(char c) { if ( c<'a' ) return c; if ( c>'z' ) return c; return (char)(c-('a'-'A')); } // Huom! Aliohjelma on kommentoitu n:\kurssit\cpp\ali\ioali.c char odota_nappain(const char *kelpaavat, char oletus, int isot) { char painettu; do { while ( (painettu=lue_merkki()) == 0 ); /* 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 << "En osaa sanoa"; break; } cout << "\n"; } while ( jatketaan() ); cout << "Kiitos vastauksista! Hei hei!\n"; return 0; }