Mutta entäpä jos tiettyjä tarkistuksia haluttaisiin kuitenkin tehdä. Pitääkö koko ohjelma kirjoittaa uusiksi?
Ei! Kriittinen on tietenkin vain kysy_tiedot. Mikäli aliohjelma on toteutettu ilman silmukkaa, kysymällä kukin tieto omalla lauseellaan, niin siitä sitten vaan lisäämään tarkistus kunkin lukemisen ympärille. Tämä on aivan hyvä ratkaisu, mikäli kenttiä on vähän tai kentät ovat eri tietotyyppiä.
int cNaytto::kysy_tiedot(cJasen &jasen) { . . . do { cout << "Hetu >"; getline(cin,apujasen.hetu,'\n'); poista_tyhjat(apujasen.hetu); if ( apujasen.hetu == "q" ) return 1; } while ( tarkista_hetu(apujasen.hetu) ); . . . do { cout << "Jäsenmaksu mk >"; cin.getline(N_S(jono),'\n'); if ( strcmp(jono,"q") == 0 ) return 1; apujasen.jmaksu = jono_doubleksi(jono,"%lf"); } while ( (apujasen.jmaksu < 0) || ( 500 < apujasen.jmaksu ) );Voiko tarkista_hetu edes selvitä tarkistuksista? Osasta voi, mutta entäpä jos esimerkiksi hetu pitää olla erisuuri kullekin jäsenelle. Aliohjelma ei tiedä mihin hetuja verrattaisiin! Siis aliohjelmalle pitäisi parametrina viedä tietysti myös käsiteltävä kerho tai ainakin jäsenistö.