previous next Up Title Contents Index

21.5 Sijoittaminen tarkistaa

Jos tietojen kysyminen hoidetaan silmukassa, voitaisiin tarkistus jättää sijoittamisen huoleksi. Eli jos sijoittaminen ei jäsenen mielestä onnistu, palautetaan tästä tieto. Paluutietoja voisi olla useita, eli osa olisi varoitusluonteisia ja osa tiedon uudelleen kysymistä vaativia. Osa taas vaatii lisätarkistuksia. Esimerkiksi hetu. Jäsenhän ei tiedä mitä muita jäseniä on, joten se ei myöskään voi tarkistaa hetusta muuta kuin muodollisen oikeellisuuden.
	cNaytto::kysy_kentta(int k,cJasen &jasen)
	. . . 
	  virhe = jasen.sijoita(k,jono);
	
	  switch ( virhe ) {
	    case KENTTA_OK:
	      return TOIM_SEURAAVA;
	
	    case KENTTA_VAROITUS:
	      cout << virhe.Virhe() << endl;
	      return TOIM_SEURAAVA;
	
	    case KENTTA_UUDELLEEN:
	    case KENTTA_MUUTETTU_KYSY:
	      cout << "Tarkista ja anna tieto uudelleen" << endl;
	      return TOIM_KYSY_UUDELLEEN;
	
	    case KENTTA_OK_ONKO_AINOA:
	      lkm = kerho- >Jasenet().laske_montako_muuta(jasen,k,kuka);
	      if ( lkm == 0 ) return TOIM_SEURAAVA;
	      kerho- >Jasenet().anna(kuka).tulosta(cout);
	      cout << "On jo ennestään!" << endl;
	      jasen.sijoita(k,edell);
	      return TOIM_KYSY_UUDELLEEN;
	
	    case KENTTA_OK_VAROITA_MUUT:
	      lkm = kerho- >Jasenet().laske_montako_muuta(jasen,k,kuka);
	      if ( lkm == 0 ) return TOIM_SEURAAVA;
	      kerho- >Jasenet().anna(kuka).tulosta(cout);
	      if ( kylla_kysymys("On jo, lisätäänkö silti uusi!") )
	        return TOIM_SEURAAVA;
	      jasen.sijoita(k,edell);
	      return TOIM_KYSY_UUDELLEEN;
	
	    default: ;
	  } // virhe
	. . .  
	int cNaytto::kysy_tiedot(cJasen &jasen)
	{
	. . . kaille kentille
	  do {
	     virhe = kysy_kentta(int k,cJasen &jasen)
	  } while ( virhe != TOIM_SEURAAVA );



previous next Up Title Contents Index