Universität Ulm, Fakultät für Mathematik und Wirtschaftswissenschaften, SAI

Loesungen zur 1. Uebungsblatt (20.10.98 - 27.10.98)


/* Soft-Uebungen WS 98/99 
 *
 * Blatt 1 vom 20.10.98 bis 27.10.98 mm
 * Familie Rekursi
 */

#include 

int anz_jahr, anz_rekursis;

/* Funktion: weibliche Rekursis bestimmen */
int rekursi_w (int jahr) {

   int i, anz;

   anz = 0;
   i = 1;
   while ( i <= jahr ) {   
      /* nach 20 Jahren eine Tochter */
      if ( i == 20){
	 anz +=1;
	 /* wenn Nachfolger noch moeglich sind */
	 if ((i + 20 )<= jahr) {
            anz += rekursi_w(jahr-20);
	 } 
      }
      /* nach 25 Jahren eine Tochter */
      if ( i == 25){
	 anz +=1;
	 /* wenn Nachfolger noch moeglich sind */
	 if ((i + 20 )<= jahr) {
            anz += rekursi_w(jahr-25);
	 }
      }
      /* Ableben nach 74 Jahren */
      if ( i == 74)
        anz -= 1;
      i++;
   }
   return  anz;
}
/* Funktion: maennliche Rekursis bestimmen */
int rekursi_m (int jahr) {

   int i, anz;

   anz = 0;
   i = 1;
   while ( i <= jahr ) {
      /* nach 26 Jahren einen Sohn */
      if ( i == 26){
	 anz +=1;
	 /* wenn Nachfolger noch moeglich sind */
	 if ((i + 26 ) <= jahr) {
            anz += rekursi_m(jahr-26);
	 } 
      }
      /* nach 27 Jahren eine Tochter */
      if ( i == 27){
	 anz +=1;
	 /* wenn Nachfolger noch moeglich sind */
	 if ((i + 20 )<= jahr) {
            anz += rekursi_w(jahr-27);
	 }
      }
      /* Ableben nach 70 Jahren */
      if ( i == 70)
        anz -= 1;
      i++;
   }
   return anz;
}

int main(void ){

   anz_jahr = 0;
   while( anz_jahr == 0 ){
      printf( "Lebende Rekursis nach .. Jahren? " );	
      scanf( "%ld", &anz_jahr );
   }
   anz_rekursis = rekursi_m(anz_jahr);

   printf( "\nDie Anzahl der Rekursis nach %d Jahren betraegt %5d \
	   Familienmitglieder\n",anz_jahr, anz_rekursis+1 );

  return 0;
}




Universität Fakultät SAI


Martina Maier, 2. November 1998