/* valuutta.cpp */ /* ** Ohjelma valuuttojen k„sittelyyn ** ** Tekij„t: Vesa Lappalainen ** Ohjelmointikurssi 1998 ** Tehty: 26.2.1998 ** Muutettu ** ** Toiminta: ** Anna m„„r„ ja valuutta>10 Dmk mk[ret] ** 10 Dmk on 30 mk ** Anna m„„r„ ja valuutta>5[ret] ** 5 Dmk on 15 mk ** ** Anna m„„r„ ja valuutta>[ret] ** ** ? = avustus ** 0 = lopetus ** 1 = vaihda valuuttaa ** 2 = lis„„ kursseja ** ** */ #include #include #include #include "string" #ifdef __TURBOC__ /* Sy”tt” Turbo-C:n mukaisesti. */ # define GETCH # include #endif //---------------------------------------------------------------------------- // Vakiota //---------------------------------------------------------------------------- const char *TARKENNIN = ".dat"; const char *VANHATARK = ".bak"; const int MAX_JASENIA = 5; const int MERKKI_ISOKSI = 1; const int MYOS_PIENET = 0; const char *KAIKKI_KELPAA = NULL; const char EI_OLETUSTA = 0; const char *RIVINVAIHTO = "\r\n"; //---------------------------------------------------------------------------- // Yleisk„ytt”isi„ apualiohjelmia: //---------------------------------------------------------------------------- char lue_merkki(void) { #ifdef GETCH /* Seuraava toimii mm. Turbo C:ss„: */ return 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 merkki_isoksi) { char painettu; do { painettu = lue_merkki(); if ( merkki_isoksi ) painettu = isoksi(painettu); if ( oletus != EI_OLETUSTA && strchr(RIVINVAIHTO,painettu) ) return oletus; } while ( kelpaavat != NULL && strchr(kelpaavat,painettu) == NULL ); return painettu; } void odota_jotakin(void) { cout << "Paina jotakin!" << endl; odota_nappain(KAIKKI_KELPAA,EI_OLETUSTA,MERKKI_ISOKSI); } int kylla_vastaus(void) { return ( odota_nappain("KE",'K',MERKKI_ISOKSI) == 'K' ); } void ei_toimi(void) { cout << "Ei toimi viel„!" << endl; odota_jotakin(); } void viiva(int pit, char merkki) { for (int i = 0; igetValuuttoja(); i++) { val = Valuutat->anna(i); val->tulosta(); // Korjataan joskus } viiva(75,'-'); cout << endl; } void cNaytto::vaihda_valuuttaa() { cout << endl; viiva(75,'-'); cout << endl; string s; char val_mista[100]="$",val_mihin[100]="mk"; double maara; double summa; const cValuutta *mista,*mihin; while ( 1 ) { cout << "Anna m„„r„ ja valuutta>"; getline(cin,s,'\n'); if ( s == "" ) return; // cout << "Annoit " << s << endl; sscanf(s.c_str(),"%lf %s %s",&maara,val_mista,val_mihin); mista = Valuutat->etsi(val_mista); mihin = Valuutat->etsi(val_mihin); if ( mista == NULL ) { cout << "P”lkkylkjkkjk " << val_mista << endl; continue; } if ( mihin == NULL ) { cout << "P”lkkylkjkkjk " << val_mihin << endl; continue; } mista->tulosta(); mihin->tulosta(); summa = mihin->muunna(maara,mista); cout << maara << " " << val_mista << " on " << summa << " " << val_mihin << endl; } } void cNaytto::lisaa_valuuttoja() { cout << endl; cout << "Lis„t„„n valuutta" << endl; // cValuutta val("mk",1.0,rand()); // Paranna huomattavasti Valuutat->lisaa_valuutta(cValuutta("mk",1.0,1.0)); Valuutat->lisaa_valuutta(cValuutta("$",5.0,5.1)); Valuutat->lisaa_valuutta(cValuutta("Dmk",3.0,3.1)); Valuutat->lisaa_valuutta(cValuutta("Skr",0.7,0.8)); } void cNaytto::logo(void) { cout << endl; cout << " ###################################" << endl; cout << " # J ˇ S E N R E K I S T E R I #" << endl; cout << " # versio 9.95 #" << endl; cout << " # Hannu Hanhi #" << endl; cout << " ###################################" << endl; } void cNaytto::ohjeet(void) { logo(); cout << endl; cout << "T„ll„ ohjelmalla ..." << endl; } void cNaytto::kiitokset(void) { cout << endl; cout << "KIITOS KˇYT™STˇ JA TERVETULOA UUDELLEEN" << endl; cout << "\n\n" << endl; } int cNaytto::lue_tiedosto() { // cout << "Anna kerhon nimi>" << endl; ei_toimi(); return 0; // return ilmoitus(kerho->lue_tiedostosta("KELMIT")); } int cNaytto::talleta() { logo(); /* if ( ilmoitus(kerho->talleta()) ) return 1; cout << endl; cout << "Tiedot talletettu tiedostoon " << kerho->Tiedoston_nimi() << TARKENNIN << endl; cout << "Vanhat tiedot tiedostossa " << kerho->Tiedoston_nimi() << VANHATARK << endl; cout << "\n\nTosin talletus ei viel„ toimi!" << endl; */ return 0; } void cNaytto::avustus(char valinta) { otsikko(valinta,"Avustus"); ei_toimi(); } void cNaytto::paamenu() { cout << "\n\n\n\n" << endl; cout << "==============" << endl; cout << endl; cout << endl; cout << "Valitse:" << endl; cout << " ? = avustus" << endl; cout << " 0 = lopetus" << endl; cout << " 1 = vaihda valuuttaa" << endl; cout << " 2 = lis„„ valuuttoja" << endl; cout << " 3 = tulosta kurssit" << endl; cout << " :"; } int cNaytto::paavalinta() { char nappain; while (1) { paamenu(); nappain = odota_nappain("?0123",EI_OLETUSTA,MERKKI_ISOKSI); switch (nappain) { case '?': avustus(nappain); break; case '0': return 0; case '1': vaihda_valuuttaa(); break; case '2': lisaa_valuuttoja(); break; case '3': tulosta_kurssit(); break; default : cout << "N„in ei voi k„yd„!" << endl; return 1; } } } int main(void) { cValuutat valuutat(10); cNaytto naytto(&valuutat); naytto.ohjeet(); if ( naytto.lue_tiedosto() ) return 1; naytto.paavalinta(); if ( naytto.talleta() ) return 2; naytto.kiitokset(); return 0; }