kreisberechnungsprogramm



  • Finde den Fehler mit dem Umfang nicht...mein Umfang macht nach der Verbesserung keinen Sinn mehr 😕

    #include <stdio.h>
    #include <math.h >
    float pi = 3.1415;
         float kreis_flaeche (float d)
        { 
    
            return (d*d*pi/4);
    
        }
    
        float kreis_durchmesser (float flaeche)
        {
    
             return sqrt(flaeche*4/pi);
    
        }
    
        float umfang (float d)
        {
    
             return (d*pi);
    
        }
        void ergebnis_ber (float erg, int welche)
        {
        if (welche == 1)
        printf(" Kreisflaeche : %.2f\n", erg);
        else if (welche == 2)
        printf("Kreisdurchmesser : %.2f\n", erg);
        else if (welche == 3)
        printf("Umfang : %.2f\n");
        else("Fehler beim Aufrufen der Funktion\n");
       }
    
            int main()
    {
    
            float ergebnis, variable;
            int abfrage;
    
            do
          {
              printf("Wählen Sie eine untenstehende Auswahl\n");
    
              printf("<1> Kreisflaeche\n");
              printf("<2> Durchmesser\n");
              printf("<3> Umfang\n");
              printf("<4> Programmende\n");
              printf("Ihre Auswahl < >\b\b");
              scanf("%d" ,&abfrage);
    
              switch(abfrage)
             {
                             case 1: printf("Durchmesser: ");
                                      scanf("%f" ,&variable);
                                      kreis_flaeche(variable);
                                      ergebnis=kreis_flaeche(variable);
                                      ergebnis_ber(ergebnis, abfrage);
                             break;
    
                             case 2: printf("Flaeche : ");
                                      scanf("%f" ,&variable);
                                      kreis_durchmesser(variable);
                                      ergebnis=kreis_durchmesser(variable);
                                      ergebnis_ber(ergebnis, abfrage);
                             break;
    
                             case 3: printf("Durchmesser : ");
                                      scanf("%f" ,&variable);
                                      umfang(variable);
                                      ergebnis=umfang(variable);
                                      ergebnis_ber(ergebnis, abfrage);
                             break;
    
                             case 4: printf("Programmende\n");
                                      scanf("%f" ,&variable);
                             break;
    
                             default: printf("Ungültige Eingabe\n");
             }
    
          }
    
          while(abfrage != 4);
          return 0;
    }
    


  • Also aus meiner Sicht sehen die Formeln OK aus, abgesehen von der geringen Genauigkeit für Pi. Kannst du mal genauer erklären, was deiner Meinung nach falsch läuft?



  • printf("Umfang : %.2f\n");
    

    Kann es sein, dass da was fehlt? 😉



  • Wenn ich bei der Abfrage den Umfang und mit einer Zahl berechnen mag und den Durchmesser angebe (Bsp. Zahl 10) kommt eine 100 stellige Zahl heraus, die nicht annähernd an dem Ergebniswert liegt, sondern weitaus höher...



  • Flücktigkeit schrieb:

    printf("Umfang : %.2f\n");
    

    Kann es sein, dass da was fehlt? 😉

    Jetzt, wo du es erwähnst - das dürfte das Problem sein.

    (manche Compiler warnen, wenn du die Parameter für printf() oder scanf() verhunzt, aber idR geht es durch und das Programm schreibt das raus, was zufällig im Speicher steht)



  • Hihi 😃 Geschwindigkeitsfehler, also!

    Danke für die Hilfe



  • Auch hier mein Hinweis:
    Vergiss float , nimm double .

    Die Berechnungen erfolgen eh als double .

    Der geringere Speicherbedarf von float spielt heutzutage nur noch bei sehr großen Feldern eine Rolle.
    Mit float verlierst du Genauigkeit.


Log in to reply