std::cout ersetzen durch cout



  • hi, habe den header stdlib eingebungen. trotzdem wird der befehl cout nicht gefunden. liegt das am compiler oder hab ich was falsch gemacht??? (nutze borland c++ builder x)

    #include <iostream>
    #include <cstdlib.h>
    
    int main()
    {
      cout << "Hallo!" << std::endl;
      getchar();
    
      return 0;
    }
    


  • cstdlib hat nichts mit cout zu tun, cout liegt in der Header-Datei <iostream> - die hast du ja richtigerweise schon eingebunden.

    Damit du nicht mehr "std::" schreiben musst, musst du den Namensraum "std" auflösen und sozusagen in den globalen Namensraum importieren:

    #include <iostream>
    using namespace std;
    
    ...
    
    cout << "cout - jetzt mit neu mit Geschmack" << endl;
    

    MfG SideWinder



  • Wenn du dir das std:: sparen willst, dann schreib ein using std::cout; davor



  • #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main()
    {
        cout << "Hallo!" << endl;
        getchar();
        return 0;
    }
    

    Siehe auch: http://tutorial.schornboeck.net/namespace.htm

    mfg.

    edit: Ich war zu langsam...



  • Und von einer cstdlib.h hab ich bisher auch noch nichts gehört, du meinst wohl stdlib.h oder cstdlib



  • User--- schrieb:

    Und von einer cstdlib.h hab ich bisher auch noch nichts gehört, du meinst wohl stdlib.h oder cstdlib

    Nein, sie meint im C++-Forum nur cstdlib und nicht stdlib.h 😉

    MfG SideWinder



  • SideWinder schrieb:

    User--- schrieb:

    Und von einer cstdlib.h hab ich bisher auch noch nichts gehört, du meinst wohl stdlib.h oder cstdlib

    Nein, sie meint im C++-Forum nur cstdlib und nicht stdlib.h 😉

    MfG SideWinder

    Oh stimmt, hatte vergessen das C-Wissen-Modul zu entladen bevor ich ins C++-Forum wechselte 😉



  • danke. kleiner fehler, aber jetzt funzt es.
    next problem:
    ich möchte zahlen runden, habe dazu eine funktion gefunden, die ich auch benutze. allerdings wird nicht gerundet, sondern ich bekomme die gleiche zahl. könnt ihr mir da auch weiterhelfen? (ich will die zahlen nicht einfach abschneiden, sie müssen wirklich gerundet werden. in meinem fall auf 0 stellen nach dem komma, möchte die funktion aber auch woanders einsetzen können.)

    #include <iostream>
    #include <math.h>
    using namespace std;
    
    double Round(double, unsigned int);
    
    int main()
    {
      double Zahl;
      cout << "Prozent:\t\t" << std::endl;
      cin >> Zahl;
    
      Round(Zahl,0);
    
      cout << "\n\nProzent gerundet:\t" << Zahl;
      getchar();
    
      return 0;
    }
    
    double Round(double Zahl, unsigned int Stellen)
    {
        Zahl *= pow(10, Stellen);
        if (Zahl >= 0)
            floor(Zahl + 0.5);
        else
            ceil(Zahl - 0.5);
        Zahl /= pow(10, Stellen);
        return Zahl;
    }
    


  • Eine solche Funktion könnte so aussehen:

    double Runden(double Zahl, char Stellen)
    {
        return static_cast<int>(Zahl * pow(10,Stellen) + 0.5) / pow(10,Stellen);
    }
    

    mfg.



  • Auch bei der Funktion bekomme ich keinen gerundeten Wert, sondern exakt den, den ich eingegeben habe (2.3)

    #include <iostream>
    #include <math.h>
    using namespace std;
    
    double Runden(double, char);
    
    int main()
    {
      double Zahl;
      cout << "Prozent:\t\t" << std::endl;
      cin >> Zahl;
    
      Runden(Zahl,0);
    
      cout << "\n\nProzent gerundet:\t" << Zahl;
      getchar();
    
      return 0;
    }
    
    //Runden-Funktion--------------------------------------------------------------
    double Runden(double Zahl, char Stellen)
    {
        return static_cast<int>(Zahl * pow(10,Stellen) + 0.5) / pow(10,Stellen);
    }
    


  • Du rufst die funktion Runden nur auf. Verwendest das Ergebnis aber nicht.
    so sollte sich was tun

    Zahl = Runden(Zahl,0);
    

    Kurt



  • Meine Funktion ändert die Zahl nicht, sondern gibt den neuen Wert zurück. Wenn du es so haben willst, das die Zahl geändert wird, müsste die Funktion so aussehen:

    void Runden(double &Zahl, char Stellen)
    {
        Zahl = static_cast<int>(Zahl * pow(10,Stellen) + 0.5) / pow(10,Stellen);
    }
    

    mfg.

    edit: ZuK Post war noch nicht da, als ich geschrieben habe. So geht's natürlich auch.



  • Wär ja unlustig wenns für ein Problem nur eine Lösung gäbe.
    Kurt


Anmelden zum Antworten