/* karvakel.cpp */ /* Ohjelmalla testataan tarkista_kello-aliohjelman toiminta / vl-2000 */ /* Karvalakkimalli. */ #include #include #include #include using namespace std; //======================================================================== string tarkista_kello(const string &jono) // Funktio palauttaa tyhj„n jonon, jos aika on virheet”n. Silloin // my”s paikka = -1. Muuten palautetaan virhett„ vastaava jono // ja virheen alkamispaikka jonossa. { int h=0,m=0,s=0; int n = sscanf(jono.c_str(),"%d:%d:%d",&h,&m,&s); if ( n < 2 ) return "Ei kunnollinen aika"; if ( h < 0 || 24 < h ) return "Tunnit v„„rin"; if ( m < 0 || 60 <= m ) return "Minuutit v„„rin"; if ( s < 0 || 60 <= s ) return "Sekunnit v„„rin"; return ""; } //======================================================================== int main(void) { struct tTesti { const char *jono; int paikka; }; string testi[] = { "12:23:00.05" , /* ok */ "kissa" , /* v„„ri„ merkkej„ */ "12:23:" , /* katkeaa kesken */ "12 23" , /* ??? */ "12k23" , /* v„„ri„ merkkej„ */ "12:30" , /* ok */ "25:30" , /* liian isot tunnit */ "12:65" , /* liian isot minuutit */ "12:59:78" , /* liian isot sekunnit */ "12:23:00.0.0" , /* liian paljon merkkej„ */ "12:59:10.1000" , /* liian isot sadasosat */ "12" , /* ok */ "" , /* tyhj„ jono */ }; string virhe; cout << "------------------------------------------------\n"; cout.setf(ios::left); for (int i=0; testi[i] != "" ; i++) { cout << "Kello " << setw(20) << testi[i]; virhe = tarkista_kello(testi[i]); cout << " => " << virhe << "\n"; } cout << "------------------------------------------------\n"; return 0; }