Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

22.4.4 tee_avain

Seuraava on hahmotelma siitä, miten cJasen voisi alustaa avaimensa. Jos on käytössä "viisaat kenttä- luokat", niin silloin tietenkin kukin kenttä itse osaa muuttua avaimeksi.

	/****************************************************************************/
	void cJasen::tee_avain(int kentan_nro)
	{
	  avain = kentta(kentan_nro).getAvain();
	}    

"Tyhmästä versio" voisi olla seuraavan näköinen:

	/****************************************************************************/
	void cJasen::tee_avain(int kentan_nro)    
	{
	  char s[20]; string st; 
	  int i; double d; 
	
	  switch (kentan_nro) {
	    case 1: case 3: case 5: // yms. merkkijonot 
	      avain = kentta_jonoksi(kentan_nro);
	      poista_tyhjat(avain);
	      for (i=avain.length(); i++) 
	        avain[i] = JARJESTYS.Avainarvo(avain[i]);
	      poista_tyhjat(avain);
	      return; 
	
	    case 2: // hetukenttä
	      st = hetu + "        ";                  
	      avain = st;
	      avain[0] = st[4];  /* Vaihdetaan pv ja vuosi keskenään! */
	      avain[1] = st[5];
	      avain[4] = st[0];
	      avain[5] = st[1];
	      return;
	
	    case 9: // kokonaislukukentät
	      i = liittymisvuosi;
	      sprintf(s,"%+05d",i);
	      avain = s; 
	      if ( avain[0] == '- ' ) avain[0]='+'- 1; /* jotta -  < + */
	      return;
	
	    case 10: case 11: // yms. desimaalikentät
	      d = kentta_doubleksi(kentan_nro); // Tätä ei ole, mutta tehtäisiin.
	      sprintf(s,"%+015.7lf",d);
	      avain = s; 
	      if ( avain[0] == '- ' ) avain[0]='+'- 1; /* jotta -  < + */
	      return;
	
	    default:
	      avain = ""; 
	      return;
	      
	  }
	}

Tehtävä 22.175 tee_avain

Miksi kokonais- ja reaaliluvut käsiteltiin kuten edellä eikä käyttäen aliohjelmaa kentta_jonoksi?
"Kommentoi" (eli miksi tehdään?) tee_avain aliohjelman jokainen rivi.
Miten MacAnkka ja McAnkka käsiteltäisiin?
Miten käsiteltäisiin Gauß?

Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys