/* Uimahypyn pistelasku Terve.... 0 = lopeta 1 = ilmoittautuminen 2 = valitse kierros 3 = anna pisteita 4 = tulosta 1 Anna kilpailijan nimi >Kalle[ret] Anna numero >5[ret] Anna kilpailijan nimi >Pelle[ret] Anna numero >5[ret] Uikutusta... Anna numero >6[ret] 2 Kierroksen numero >12[ret] uikuruu Kierroksen numero >2[ret] 3 Anna kilpailijan numero>5[ret] Hypyn vaikeusaste >3.5[ret] Anna tuomaripisteet >7 9 4 5.5 6[ret] Anna kilpailijan numero>[ret] 4 ... Vesa Lappalainen 25.2.1999 */ #include #include #include //------------------------------------------------------------------------------ // Saadaan %lf k„sittely linkitetty„ mukaan :-( void hopo() { double d; scanf("%lf",&d); } //------------------------------------------------------------------------------ string erota(string &jono, char merkki=' ',bool etsi_takaperin=false) // Erottaa jonosta valitun merkin kohdalta alkuosan ja loppuosan. // Alkuosa palautetaan funktion nimessä ja loppuosa jätetään // jonoon. Merkin etsimissuunta voidana valita (oletuksena alusta päin). // Jos merkkiä ei löydy, palautetaan koko jono ja tyhjennetään jono. // Käyttöesimerkki: olkoon aluksi string jono,s; // 1) jono = "123 456"; s = erota(jono); => jono == "456" s == "123" // 2) jono = "123"; s = erota(jono); => jono == "" s == "123" // 3) jono = "1 2 3"; // while ( jono != "" ) cout << erota(jono) << ","; => tulostaa 1,2,3, // { size_t p; if ( !etsi_takaperin ) p = jono.find(merkki); else p = jono.rfind(merkki); string alku = jono.substr(0,p); if ( p == string::npos ) jono = ""; else jono.erase(0,p+1); return alku; } const int TUOMAREITA=5; const int KIERROKSIA=3; class cKierros { double tuomarit[TUOMAREITA]; double vaikeusaste; public: cKierros(); string getTuomarit() const; string getAsString() const; void setAsString(string &st); void setTuomarit(string &st); double getSumma() const; void setVaikeusaste(string &s) { sscanf(s.c_str(),"%lf",&vaikeusaste); } }; cKierros::cKierros() { for (int i=0; iKilpailijoita(); i++) { cUimahyppaaja &u = k->anna(i); cout << u->getNro() << u->getNimi << ":" << u->getSumma() << "\n"; } cout << "----------------------------------\n"; } //------------------------------------------------------------------------- // cKilpailu //------------------------------------------------------------------------- class cKilpailu { int max_kilp; int lkm; cUimahyppaaja **hyppaajat; public: cKilpailu() { max_kilp = 5; hyppaajat = new cUimahyppaaja *[max_kilp]; lkm = 0; } const char *lisaa(const cUimahyppaaja &u) { if ( lkm >= max_kilp ) return "Ei mahdu!"; cUimahyppaaja *uusi = new cUimahyppaaja(u); if ( uusi == NULL ) return "Muisti ei riit„!"; hyppaajat[lkm] = uusi; lkm++; return NULL; } cUimahyppaaja &anna(int n) { return *hyppaajat[n]; } }; #if 0 int main(void) { cKierros k; cout << k.getTuomarit() << "\n"; cout << k.getAsString() << "\n"; string st1("7 9 4 5.5 6"); k.setTuomarit(st1); cout << k.getTuomarit() << "\n"; string st2("7 9 4 5.5 6 :3.5"); k.setAsString(st2); cout << k.getAsString() << "\n"; return 0; } #endif #if 0 int main(void) { cTulos t; cout << t.getSumma() << "\n"; string st2("7 9 4 5.5 6 :3.5"); t.getTulokset(0).setAsString(st2); t.laskeTulos(); cout << t.getSumma() << "\n"; return 0; } #endif #if 0 int main(void) { cUimahyppaaja kalle("Kalle",5); string st1("7 9 4 5.5 6"); string st2("3.5"); kalle.setTuomarit(1,st1); kalle.setVaikeusaste(1,st2); cout << kalle.getSumma() << "\n"; return 0; } #endif #if 0 int main(void) { cKilpailu k; cUimahyppaaja kalle("Kalle",5); string st1("7 9 4 5.5 6"); string st2("3.5"); kalle.setTuomarit(1,st1); kalle.setVaikeusaste(1,st2); k.lisaa(kalle); k.lisaa(kalle); cout << k.anna(0).getSumma() << "\n"; cout << k.anna(1).getSumma() << "\n"; return 0; } #endif #if 1 int main(void) { cKilpailu k; cNaytto naytto(k); naytto.lisaa(); naytto.tulosta(); return 0; } #endif