Einfaches Proramm mit Unterfunktion läuft nicht.



  • Hallo zusammen,

    ich bin Anfänger und beschäftige mich gerade mit Funktionen. Ich will ein Programm schreiben, dass ein basis und einen exponent einliest und dann durch eine funktion der potenzwert eingelesen wird. Das Programm macht nach den Eingaben nicht weiter. Könnt ihr mir helfen?

    #include <stdio.h>
    
    double hoch(double wert, int potenz)
           {
           int x;
           double ergebnis=1.0;    
               if(potenz>1){
                            for(x=1;x=potenz;x++){
                            ergebnis=ergebnis*wert;}
                            return(ergebnis);
                            }
               else if(potenz==1)
               return(1);
               else 
               return(-1);             
            }
    
    main() {
    
    double zahl;
    int p;
    printf("Welche Zahl soll potenziert werden?\n");
    scanf("%i",&zahl);
    printf("Potenz?\n");
    scanf("%i",&p);
    printf("%i hoch %d ist %d",zahl,p,hoch(zahl,p));
    getch();
    }
    


  • Erstmal ist weder %i noch %d als Formatkennung für Gleitkomma-Zahlen geeignet. Zum Einlesen der Basis benötigst du %lf, zum Ausgeben von Basis und Ergebnis %f.

    Zweitens ist die Abbruchbedingung deiner for-Schleife falsch formuliert - "x=potenz" ist eine Zuweisung und kein Vergleich, du brauchst "x<=potenz".

    Und drittens: Was spricht gegen pow()?



  • Hallo,

    also was garnicht geht ist

    for(x=1;x=potenz;x++){ ... }
    

    x = potenz sollte heißen x <= potenz

    gruß mdoemli



  • ok, sorry. War zu langsam. 😞



  • Danke, hab da wohl was durcheinander geworfen. Mal wieder nur ne Kleinigkeit. Jetzt läufts

    #include <stdio.h>
    
    double hoch(double wert, int potenz)
           {
           int x;
           double ergebnis=1.0;    
               if(potenz>1){
                            for(x=1;x<=potenz;x++){
                            ergebnis=ergebnis*wert;}
                            return(ergebnis);
                            }
               else if(potenz==1)
               return(1);
               else 
               return(-1);             
            }
    
    main() {
    
    double zahl;
    int p;
    printf("Welche Zahl soll potenziert werden?\n");
    scanf("%lf",&zahl);
    printf("Potenz?\n");
    scanf("%i",&p);
    printf("%lf hoch %i ist %lf",zahl,p,hoch(zahl,p));
    getch();
    }
    


  • mdoemli schrieb:

    Hallo,

    also was garnicht geht ist

    for(x=1;x=potenz;x++){ ... }
    

    x = potenz sollte heißen x <= potenz

    gruß mdoemli

    dir auch einen herzlichen Dank 🙂


Anmelden zum Antworten