Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

22.5.2 tutki_tasmaako

Metodissa etsi_indeksit muutetaan wildmat - kutsu kutsuksi tutki_tasmaako. Aliohjelma tarvitsee muutaman lisäparametrin, jotta tarpeen vaatiessa osataan muuttaa kenttiä avaimiksi. Miksikö avaimiksi? No tietysti siksi, että avain rakennettiin siten, että aakkosjärjestys, sotujen järjestys yms. pitävät paikkansa.

Aliohjelman aluksi etsitään onko kyse jostakin erikoisoperaatiosta. Mikäli ei ole toimitaan kuten ennenkin. Mikäli on kyse jostakin erikoisesta operaatiosta, poistetaan hakumaskin alusta operaatio.

	
	/****************************************************************************/
	int                       /* 1 = ei täsmää                                  */
	cJasen::tutki_tasmaako(   /* 0 = täsmää                                     */
	  const string &maski    ,/* s   Maski muutettuna isoiksi kirjaimeksi       */
	  int knro                /* s   Kentän numero.                             */
	)    
	{
	  int i,tulos,ehto_ind=0; string m; cJasen mjasen;
	  string ikentta;    // Kentän knro sisältö isoksi muutettuna merkkijonona
	
	  ikentta = kentta_jonoksi(knro); jono_isoksi(ikentta);
	
	  for (i=1; EHDOT[i].ehto; i++) 
	    if (maski.find(EHDOT[i].ehto) == 0 ) { 
	      ehto_ind = i; break; 
	    }
	
	  m = maski.substr(EHDOT[ehto_ind].pit);
	
	  switch ( EHDOT[ehto_ind].kasky ) {
	
	    case YHT:     
	      return wildmat(ikentta,m);
	
	    case ERIS:    
	      return !wildmat(ikentta,m);
	
	    case PIEN:
	    case PIENYHT:
	    case SUUR:
	    case SUURYHT:
	      mjasen.sijoita(knro,m);
	      mjasen.tee_avain(knro);
	      tee_avain(knro);
	      tulos = Avain().compare(mjasen.Avain());
	      switch ( EHDOT[ehto_ind].kasky ) {
	        case PIEN:    return !(tulos<0);
	        case PIENYHT: return !(tulos<=0);
	        case SUUR:    return !(tulos>0);
	        case SUURYHT: return !(tulos>=0);
	      }
	
	    default:      
	      return 1;
	  }
	}

Tehtävä 22.176 tutki_tasmaako

Miksi EHDOT taulukossa " <=" on ennen " <" operaatiota?
"Kommentoi" metodin tutki_tasmaako jokainen lause!

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys