potenzieren ist einfach. warum bei mir net???



  • hi, habe jetzt 5000 sites über google konsultiert und bin zu dem theoretischen schluss gekommen, dass in c++ potenzieren (z. B. 10 hoch 4 = 10000 ) eigentlich ein mücken schiss sein muss.

    habe daher folgendes prog geschrieben:

    # include <iostream>
    # include <cmath>
    
    using namespace std;
    
    int main()
    
    {
      int a;
      cout << " Bitte a eingeben!\n";
      cin >> a;
      int b;
      cout << " Bitte b eingeben!\n";
      cin >> b;
      double c = std::pow(a,b);
    
      cout << c;
    
      return 0;
    }
    

    blöde frage: warum macht borland c++ builder x zur compile zeit den fehler "file1.cpp": E2015 Mehrdeutigkeit zwischen 'std::pow(long double,int)' und 'std::pow(double,int)' in Funktion main() in Zeile 15??

    wie ist der code richtdig???

    lg kasimirle



  • Du musst a vorher nach double, oder long double casten.
    z.B.:

    double c = std::pow( (double)a,b);
    


  • ProgChild schrieb:

    Du musst a vorher nach double, oder long double casten.
    z.B.:

    double c = std::pow( (double)a,b);
    

    er möchte in c++ coden,
    bleib bei static_cast, nicht c und cpp vermischen 🙂



  • alternativ auch einfach a als double deklarieren dann macht auch der ergebniss typ als double sinn.



  • Hier mal noch die Variante, die ich bevorzuge.

    double c = std::pow( double(a),b);
    


  • ProgChild schrieb:

    Du musst a vorher nach double, oder long double casten.
    z.B.:

    double c = std::pow( (double)a,b);
    

    hi, was issen casten??
    lg kasimirle



  • Kurz: explizite Typumwandlung

    Technisch: Dadurch, daß du das "(double)" vor der Variablen angibst, sagst du dem Programm, daß es den Wert von 'a' als Double-Zahl interpretieren soll.

    Und wenn du es ausführlicher willst: Casting



  • er könnte auch einfach die zu potentierente Variable als double deklarieren.
    😃



  • std::cout << std::pow(static_cast<double>(a), b) << std::endl;
    

    da spart man sich 1. c und zweitens ist es nen c++ und kein c-style-cast ...

    #include <iostream>
    #include <cmath>
    
    int main()
    {
        std::cout << "Potenzkalkulator V1.0" << std::endl;
        double number = 0.0;
        std::cout << "x: " << std::flush;
        std::cin >> number;
        int pow = 0;
        std::cout << "Potenz: " << std::flush;
        std::cin >> pow;
        std::cout << std::pow(number, pow) << std::endl;
    
        return 0;
    }
    

    Sowas wäre doch nett.


Anmelden zum Antworten