Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

16.02.2008, 17:19

ahh okay danke danke :-)

dann ist der fall schon mal gelöst mit der 0 :-)

Es hat geklappt :-)

Nur noch der dall das er abstürzt durch einer eingabe eines buchstaben´s.
Wenn das problem gelöst ist, dann hab ich mein Listing so weit hoffe ich absturzsicher ^^

12

16.02.2008, 17:25

ahhhhhhhhhh^^

C-/C++-Quelltext

1
2
3
cout << "Wieviele moechten Sie kaufen: ";
                        cin.ignore(256,'n'); 
                        cin >> Anzahl;

man muss erst ein n eintippen bevor er die zahl akzeptiert :-)

Obwohl es sicherlich bei meinem Spiel nicht so dolle ist erst einen buchstaben einzutippen und dann die zahl aber besser als das er sofort abstürzt bei einem buchstaben.

Gebe ich nun aber bbb333 ein ist der absturz wieder da^^

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

13

16.02.2008, 18:15

Wiso machst du es nicht so ?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
cout << "Wieviele moechten Sie kaufen: ";
do{ 
    // Löscht alle Fehlermeldungen von cin 

    cin.clear(); 
    // Löscht den Eingabe-stream 

    cin.ignore(256,'\n'); 

    cin >> Anzahl; // Eingabe 


// Prüft ob bei der Eingabe ein Fahler aufgetreten ist.. 

}while( cin.fail() ); 

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

16.02.2008, 18:36

Zitat von »"Databyte"«

Wiso machst du es nicht so ?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
cout << "Wieviele moechten Sie kaufen: ";
do{ 
    // Löscht alle Fehlermeldungen von cin 

    cin.clear(); 
    // Löscht den Eingabe-stream 

    cin.ignore(256,'\n'); 

    cin >> Anzahl; // Eingabe 


// Prüft ob bei der Eingabe ein Fahler aufgetreten ist.. 

}while( cin.fail() ); 


Wieso werden eigentlich immer die nicht portablen Lösungen vorgezogen, wenn die Portablen doch mindestens genauso einfach zu verwenden sind?
@D13_Dreinig

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

15

16.02.2008, 18:39

Wiso ?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

16

16.02.2008, 18:42

Zitat von »"Databyte"«

Wiso ?


Weil C++ keine Funktionalität bereitstellt auf den Konsolenpuffer zuzugreifen. Das heißt alle Ansätze in diese Richtung können funktionieren, tun es aber ggf nicht überall.

Einfach einen String als Eingabepuffer verwenden und zum entsprechenden Typ casten. Dann gibts auch keine Probleme.
@D13_Dreinig

17

16.02.2008, 19:34

Der vorschlag von Databyte hat leider auch nicht Funktioniert oder ich mache noch irgend was falsch.
Hier der Codeauszug nochmals:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
                    do
                    {
                        cout << "Sie haben die Aktie Pfirch gewaehlt\n";
                        cout << "Sie steht zur Zeit bei: " << Pfirch << endl;
                        MaximalKauf = StartKapital / Pfirch;
                        cout << "Sie koennen mit Ihrem Geld Maximal " << MaximalKauf << " Aktien Kaufen\n";
                        cout << "Wieviele moechten Sie kaufen: ";
                        cin.clear();
                        cin.ignore(256,'\n');
                        cin >> Anzahl;
                        if (MaximalKauf >= Anzahl )
                        {
                            HabenP += Anzahl; // Hinzufügen der Aktien die man Besitzt

                            StartKapital -= Anzahl * Pfirch; // Das Kapital abziehen

                            // Zufallsberechnung der Aktien

                            Zufall (&BrokenHeimer, BrokenHeimer, &Pfirch, Pfirch, &Mucrosoft, Mucrosoft);
                            Tage--; // Bei kauf der Aktie wird ein Tag abgezogen

                        }
                        else // Wenn zu viele Aktien gewählt werden

                        {
                            cout << "Nicht genug Geld um so viele Aktien zu kaufen\n";
                        }
                    } while (cin.fail() && MaximalKauf<=Anzahl && MaximalKauf == 0);


Bei der variante stürzt er mir auch immer ab bzw macht mir dann eine endlosschleife

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

18

16.02.2008, 19:57

Nein ... du sollst diese schleife extra und nur um deine Eingabe machen und nicht
bei deiner do..while-Schleife mit einbauen ! :lol: 8)

19

17.02.2008, 10:59

achso *lach ^^

dann werd ich das gleich sofort mal testen :-)

20

17.02.2008, 11:05

es hat geklappt :-)

Im kurztest keine Abstürze :-)

Vielen dank :-)

Werbeanzeige