previous next Up Title Contents Index

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 char *maski      ,/* s   Maski muutettuna isoiksi kirjaimeksi       */
	  int knro                /* s   Kentän numero.                             */
	)    
	{
	  int i,tulos,ehto_ind=0; const char *m; cJasen mjasen;
	  char ikentta[80]; // Kentän knro sisältö isoksi muutettuna merkkijonona
	
	  kopioi_jono(N_S(ikentta),kentta_jonoksi(knro));
	
	  for (i=1; EHDOT[i].ehto; i++) 
	    if ( strstr(maski,EHDOT[i].ehto) == maski ) { 
	      ehto_ind = i; break; 
	    }
	
	  m = maski+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 = strcmp(Avain(),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.183 tutki_tasmaako

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


previous next Up Title Contents Index