Brauche Hilfe bei Fehlerhaftem Programm



  • Hallo,

    ich habe ein Programm geschrieben, was mir eigentlich die Anzahl an Bakterien einer Kultur nach i Tagen berechnen und ausgeben sollte. Das Bakterienwachstum un die spätere Reduktion wird durch eine Funktion dargestellt. Diese Funktion lässt sich durch folgende Rekursionsgleichung beschreiben
    bac(0) = a
    bac(i + 1) = bac(i) + ((p-i*q)/100) * bac(i)

    Das hier ist der Quelltext:

    #include <stdio.h>
    #include <stdlib.h>

    double bac( int i, double a, double p, double q ){
    if ( i > 1 ) return bac( i - 1, a + ( p - q ) / 100 * a, p, q + 0.2 );
    return a;
    }

    int main(int argc, char *argv[])
    {
    int i;
    double a;
    printf( "Bitte Anzahl der Tage eingeben:\n" );
    scanf( "%d", &i );
    printf( "Bitte Anzahl der Bakterien eingeben:\n" );
    scanf( "%f", &a );
    printf( "Nach %d Tagen sind noch %5.5f Bakterien am Leben\n", i, bac( i, a, 5.0, 0.0 ) );

    system( "PAUSE" );
    return 0;
    }

    Leider gibt mir das Programm keine vernünftige Lösung aus.

    Bitte helft mir.

    Vielen dank schon mal im voraus.


  • Mod

    Ich poste es nur mal schön formatiert, habe es noch nicht angeguckt. Ab deinem nächsten Beitrag formatierst du bitte selber, das geht mit den Buttons unter den Smileys:

    #include <stdio.h>
    #include <stdlib.h>
    
    double bac( int i, double a, double p, double q ){
      if ( i > 1 ) return bac( i - 1, a + ( p - q ) / 100 * a, p, q + 0.2 );
      return a;
    }
    
    int main(int argc, char *argv[])
    {
      int i;
      double a;
      printf( "Bitte Anzahl der Tage eingeben:\n" );
      scanf( "%d", &i );
      printf( "Bitte Anzahl der Bakterien eingeben:\n" );
      scanf( "%f", &a );
      printf( "Nach %d Tagen sind noch %5.5f Bakterien am Leben\n", i, bac( i, a, 5.0, 0.0 ) );
    
      system( "PAUSE" );
      return 0;
    }
    

    Die Ausgabe meines Compilers gibt es als Bonus auch noch dazu:

    test.c: In function ‘main’:
    test.c:16:3: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘double *’ [-Wformat]
       scanf( "%f", &a );
       ^
    

  • Mod

    Nach angucken des Quelltextes und ein bisschen rumspielen: Ja, der oben von meinem Compiler automatisch erkannte Fehler war die Ursache. Merke also: Compilerwarnungen einschalten! Warnungen wie Fehler behandeln!



  • Jetzt klappt das Ganze und nächstes mal formatier ich das selber. Vielen dank du hast mir sehr geholfen.


Log in to reply