Erste Programme zum Laufen bringen



  • Du erwartest da einen Integer und keine Zeichenkette. Ich empfehle std::string in Verbindung mit std::cin>> (wie in deinem Beispiel) oder getline().

    So und jetzt nochmal probieren, hop hop.



  • l'abra d'or schrieb:

    int name;
    ->
    std::string name;
    Braucht ein #include <string>

    Stimmt gar nicht. KoyaKarpfen-Fuchs kann's sogar pfusch0rn:

    std::string Buffer;
    std::cin.getline(const_cast<char *> (Buffer.c_str()), 256);
    

    😃



  • So, ich hab nochmal nachgeschaut und ihr hattet Recht. Mein Prof hatte es so dastehen. Problem ist aber immer noch, dass ich nur meinen Vornamen eingeben kann und das darauffolgende nicht mehr erscheint 🙂

    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
    cout << "Geben Sie Ihren Vornamen ein:";

    string name;
    cin >> name;

    cout << "Hallo, " << name << "! \n Wie gehts's?"<<endl;
    return(0);
    }



  • Der Stream wird beendet, sobald Enter gedrückt wird. Entweder Vor- und Nachname mit zwei verschiedenen std::cin>>-Aufrufen holen oder mit Leertaste eingeben. Achja, um den Return-Wert muss keine Klammer.



  • // cin >> name;
    std::getline(cin, name);
    


  • der Stream wird beendet, sobald Enter gedrückt wird. Entweder Vor- und Nachname mit zwei verschiedenen std::cin>>-Aufrufen holen oder mit Leertaste eingeben. Achja, um den Return-Wert muss keine Klammer.

    Es wäre ja nur eine Engabe. Also der Vorname.
    Ist es dann nicht so, dass ich den Teil:

    cout << "Hallo, " << name << "! \n Wie gehts's?"<<endl;
    return0;
    }

    dann total vergessen kann, weil ich muss ja Enter drücken um in den nächsten "Bereich zu kommen oder? Was würde dann sonst noch funktionieren?

    Sagen wir mal, ich gib als Vorname Sepp ein, dann müsste doch nachdem ich Sepp eingegeben habe und was gedrückt habe, doch dastehen:

    Hallo Sepp,
    Wie geht's?

    In der Vorlesung steht auch, dass using namespace std erspart uns die Wiederholung des Gültigkeitsbereichs in den Anweisungen.



  • Tut's doch auch, nachdem man Enter gedrückt hat 👍



  • Hallo,

    damit das Programm nicht so schnell beendet wird musst du vor'm "return 0" eine Eingabe o.ä. fordern:

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
    char dumb; 
    cout << "Geben Sie Ihren Vornamen ein:";
    
    string name;
    cin >> name;
    
    cout << "Hallo, " << name << "! \n Wie gehts's?"<<endl;
    
    cin  >> dumb; // Programm warten bis eine Eingabe kommt
    return(0);
    }
    


  • @_) ich danke dir. Jetzt gehts.
    Ich versteh nur nicht, warum er uns dann sowas vorgibt, wenn dann die Hälfte vom Programm nicht funktioniert. ^^

    Danke auch an die anderen. Ich werd mich noch häufiger an euch wenden ;). Will ja die Prüfung bestehen.



  • Das Programm funktioniert einwandfrei. Nur bleibt die Konsole halt nicht offen (:

    Eine Alternative ist übrigens std::cin.get(); (anstelle des cin).



  • Mittlerweile hat unser Prof gemeint, dass dies so gedacht war um uns anfänglich etwas zu verwirren.

    Es reicht wenn wir
    #include <conio.h>
    und am Ende
    getch();
    eingeben.

    Ich habe wie versprochen mittlerweile wieder eine Frage:

    #include <iostream>
    #include <conio.h>

    using namespace std;

    int main()
    {
    int zahl,z2;
    cout << "Gib eine Zahl zwischen 5 - 15 ein" << endl;

    cin >> zahl;

    if (zahl < 5 || zahl > 15)
    { cout << "Ungueltige Zahl!" << endl;
    getch();return(0);
    }
    cout << "Geben Sie eine 2. Zahl im Bereich von 5 - 15 an" << endl;
    cin >> z2;
    if (zahl < 10 && z2 < 10)
    { cout << "Die Zahlen sind beide unter 10!"<<endl;}
    else if (zahl==z2) {cout << "Die Zahlen sind Beide gleich"<<endl;}
    else {cout << "Die Summe lautet " << zahl + z2 <<endl;}

    getch();return(0);
    }

    Die dickgedruckte Zeile wird bei mir in keinem Fall ausgegeben. Wo liegt der Fehler? Wär euch wirklich sehr dankbar.

    Habe schon paar Blätter überprüft, aber ich seh den Fehler mit meinem ungeschulten Auge nicht.



  • "conio.h" ist ein DOS-Header und hat als solcher wenig mit Standard-C++ zu tun...ein cin.get() tut's da auch, und ist noch dazu unabhängig vom Betriebssystem.

    Ein Tipp zu deinem Problem: Gib mal zwei gleiche Zahlen ein, die beide >= 10 sind und sieh dir die Verwendung von else if nocheinmal an. Na?



  • Mittlerweile hat unser Prof gemeint, dass dies so gedacht war um uns anfänglich etwas zu verwirren.

    An welcher Uni bist du denn? oO



  • Ein Tipp zu deinem Problem: Gib mal zwei gleiche Zahlen ein, die beide >= 10 sind und sieh dir die Verwendung von else if nocheinmal an. Na?

    Vielen Dank, ich habs kapiert. Wenn ich Zahlen unter 10 angebe, dann wird es automatisch:

    { cout << "Die Zahlen sind beide unter 10!"<<endl;}

    Danke.



  • Neue Frage:

    Wir haben gestern ein paar Übungen bekommen, die wir lösen sollen bzw. am Montag will der Prof sie uns erklären. Ich will aber schonmal bissl Vorarbeit leisten.

    Ich muss dazu den Befehl fixed einbinden um z.B. die Zahl PI mit 3 Nachkommastellen auszugeben:

    #include <iostream>
    #include <iomanip>
    #include <math.h>

    using namespace std;

    int main()
    {

    double atan(double),a;

    a = 4 * atan(1.0);

    fixed; cout.precision(3) << a << endl;

    Ich weiß nur leider nicht, wie ich dieses fixed miteinbaue, sodass keine Fehlermeldung kommt. Ansonsten müsste ja der Vorgang so passen oder?

    Das gleiche Problem habe ich auch bei: scientific

    double c;

    c = a /= 100;

    scientific; cout.precision(2) << c << endl;

    getch();return(0);



  • cout << setprecision(2) << scientific << d << endl;
    


  • Dankeschön 🙂

    Nun funktioniert es.



  • Hallo,

    ich habe wiedermal ein kleines Problem bei der Schreibweise eines Befehls:

    q = (1+Zins)/(12*100);

    Summe = Rate * (1-q pow(n)) / (q pow(n) - q pow(n+1));

    Mir wurde gesagt, dass man z.b. 1^2 in C++ nicht schreiben kann. Darum muss man math.h einbinden und dann mit pow(n) arbeiten.
    In dem Fall wäre es halt z.b. q^n. Ich weiß nur nicht wie ich das sinnvoll mit pow eingeben kann, den wenn ich es wie oben machen, dann kommt eine Fehlermeldung im Compiler.


  • Administrator

    1. Fehlermeldung immer mit angeben!
    2. Man kann 1^2 schon schreiben, nur bedeutet es in C++ xor.
    3. Du sollst nicht math.h sondern cmath verwenden.
    4. RTFM 😉

    Grüssli



  • Vielen Dank Dravere. Mein Programm funktioniert nun. Habe es so gemacht, wies es bei dem Link angegeben war.
    Ich finds immer toll, wie schnell hier geantwortet wird. Ist super! 🙂

    Eine kleine Verständnisfrage hätte ich noch. math.h ist ja noch von C oder?
    Hat es jetzt irgendwelche Auswirkungen wenn ich dies verwende und nicht das neuere?

    Viele Grüße

    dumdidu


Anmelden zum Antworten