HILFE!!! Programm funktioniert nicht!!



  • float berechnung(float a, float b) {
    	if(a>b)
    		a = berechnung(a/b,a);
    	return b*a;
    }
    
    int main(){
    
    	printf("%g", berechnung(1,4));
    
    	return 0;
    }
    

    Was mach ich falsch? 😞 😞 😞



  • Wie wäre es wenn du uns sagen würdest was du für Fehlermeldung bekommen hast?



  • Keine Fehlermeldung.



  • #include <stdio.h>
    
    float berechnung(float a, float b) {
    if(a >= b) {
    a = berechnung(a / b, a);}
    return b * a;
    }
    
    int main(){
    printf("%g", berechnung(1,4));
    getch();
    return(0);
    }
    

    Probiere es jetzt noch mal C++ Gast. Der Fehler müsste jetzt verschwunden sein. 🙂



  • Nein, die Wurzel wird immer noch nicht richtig berechnet. 😞



  • C++ Gast schrieb:

    Nein, die Wurzel wird immer noch nicht richtig berechnet. 😞

    Ich weiß nicht, welcher Algorithmus dieser Funktion zu Grunde liegen soll, aber entweder ist der falsch, oder die Umsetzung in C.

    Erklär doch bitte mal, wie diese Funktion denn "die Wurzel" berechnen soll. Die Wurzel aus was überhaupt? 1 oder 4? So, wie sie da steht, tut die Funktion nichts als die Argumente zu multiplizieren, weil 1 nicht >= 4 ist.



  • Versuche getch() im #include conio.h deklarieren

    #include <stdio.h> 
    #include <conio.h>
    
    float berechnung(float a, float b) { 
    if(a >= b) { 
    a = berechnung(a / b, a);} 
    return b * a; 
    } 
    
    int main(){ 
    printf("%g", berechnung(1,4)); 
    getch(); //include conio.h 
    return(0); 
    }
    


  • MFK schrieb:

    C++ Gast schrieb:

    Nein, die Wurzel wird immer noch nicht richtig berechnet. 😞

    Ich weiß nicht, welcher Algorithmus dieser Funktion zu Grunde liegen soll, aber entweder ist der falsch, oder die Umsetzung in C.

    Erklär doch bitte mal, wie diese Funktion denn "die Wurzel" berechnen soll. Die Wurzel aus was überhaupt? 1 oder 4? So, wie sie da steht, tut die Funktion nichts als die Argumente zu multiplizieren, weil 1 nicht >= 4 ist.

    Achso, dann hab ich da was falsch verstanden. Ich dachte ich hab ein schnelles wurzelberechungsprogramm gefunden.



  • Probier doch mal SQRT(); aus der math.h zu deklarieren



  • bauarbeiterjoe schrieb:

    Probier doch mal SQRT(); aus der math.h zu deklarieren

    wozu deklarieren? Es dürfte mehr helfen, wenn er es verwendet 😉



  • Da muss ich dir recht geben. Mit dieser Funktion sollte sein Problem gelöst sein.



  • versuch noch using namespace std; unter direktive deklarieren 😕



  • was macht ihr eigentlich gerade? ihm tipps geben, wie er ein programm zum laufen bekommt? da könnt ihr doch die herkömmliche weise nutzen, mit dem berühmten "hello world" programm.
    ich machs so:

    include <iostream>
    using namespace std;
    int main()
    {
         cout << "Hello World 1" << endl;
         printf("Hello World 2\n");
         cin.get();
         return 0;
    }
    

    😃 ich find dein programm lustig, dass das programm irgendwie immer b*a ausgibt.
    (tipp: mach a*b, das ist stan*d*a*r*t* in der mathematik)

    Hier ein Quellcode von mir, den ich vor einiger Zeit gecodet habe (Heronverfahren) zum Thema Wurzelrechnung:

    float Funktion(float gewuenschte_Zahl)
    {
              float Seite1 = gewuenschte_Zahl;
              float Seite2 = 1;
              int i=0;
              for(;;)
              {          
                   i++;
                   Seite1 = ((Seite1+Seite2)/2);
                   Seite2 = (gewuenschte_Zahl/Seite1);
                   if((Seite1 == Seite2)||(i>1000))
                   {
                   cout << setprecision(40) << Seite1;
                   //alternativ: printf(Seite1);
                   //oder: return Seite1;
                   break;
                   }
              };
    
    }
    

    setprecision ist nur dazu da, damit die stellen hinter dem komma möglichst genau werden


Anmelden zum Antworten