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

1

13.04.2020, 11:37

Problem bei Werteeingabe durch cin

Hallo zusammen,

wie es sicher nicht schwer zu erkennen sein wird, beschäftige ich mich erst seit einer kurzen Zeit mit C++.
Als Einstieg habe ich mir das Buch C++ für Spieleprogrammierer von Herrn Kalista gekauft und finde mich bisher gut zurecht.

Da ich mit den Beispielen immer ein wenig experimentiere stoße ich hier und dort schon einmal auf Probleme.
Einige kann ich mir selbst erklären und lösen, andere wieder nicht.

So ein Problem habe ich nun vor mir, auch wenn es sicher recht banal sein wird.

folgenden Code möchte ich um eine Möglichkeit der Werteingabe durch cin erweitern (schon 100x im Buch so durchgeführt):

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>

using namespace std;

void testeBereich (int Wert, int Min, int Max);       // Prototyp
void testeBereich (float Wert, float Min, float Max); // Prototyp

// Hauptprogramm
//
int main ()
{
    // Variablen
    //
    int Minimum = 0;
    int Maximum = 800;
    int Wert = 0;

    float fMinimum = 100.0f;
    float fMaximum = 1000.0f;
    float fWert = 0;

    testeBereich (Wert, Minimum, Maximum);
    testeBereich (fWert, fMinimum, fMaximum);

    return 0;
}

// testeBereich (für Integer-Werte)
//
void testeBereich (int Wert, int Min, int Max)
{
    if ((Wert >= Min) && (Wert <= Max))
        cout << "(int) Wert innerhalb des Bereichs" << endl;
    else
        cout << "(int) Wert ausserhalb des Bereichs" << endl;
}

// testeBereich (für float-Werte)
//
void testeBereich (float Wert, float Min, float Max)
{
    if ((Wert >= Min) && (Wert <= Max))
        cout << "(float) Wert innerhalb des Bereichs" << endl;
    else
        cout << "(float) Wert ausserhalb des Bereichs" << endl;
}



Mein Problem ist nun, dass ich nicht verstehe warum die Eingabe nur in einer Reihenfolge funktioniert:

funktioniert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main ()
{
    // Variablen
    //
    int Minimum = 0;
    int Maximum = 800;
    int Wert = 0;

    float fMinimum = 100.0f;
    float fMaximum = 1000.0f;
    float fWert = 0;

    cout << "Bitte einen intWert eingeben: ";
    cin >> Wert;
    cout << "Bitte einen fWert eingeben: ";
    cin >> fWert;

    testeBereich (Wert, Minimum, Maximum);
    testeBereich (fWert, fMinimum, fMaximum);

    return 0;


funktioniert nicht:

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
int main ()
{
    // Variablen
    //
    int Minimum = 0;
    int Maximum = 800;
    int Wert = 0;

    float fMinimum = 100.0f;
    float fMaximum = 1000.0f;
    float fWert = 0;


    cout << "Bitte einen fWert eingeben: ";
    cin >> fWert;
    cout << "Bitte einen intWert eingeben: ";
    cin >> Wert;


    testeBereich (Wert, Minimum, Maximum);
    testeBereich (fWert, fMinimum, fMaximum);

    return 0;



Da ich mich nicht einfach damit zufrieden geben möchte das es anders herum funktioniert
würde ich mich freuen, wenn mir jemand erklären könnte, warum die Eingabe nur funktioniert wenn ich
zuerst den intWert und danach den fwert mittels Eingabe ändere.

Ich bedanke mich

EDIT:
kann gelöscht werden,
dass Problem lag in der Eingabe selbst. Anscheinend müssen komma's als Punkte geschrieben werden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »H2OkO-pF« (13.04.2020, 11:47) aus folgendem Grund: Problem erkannt


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

13.04.2020, 19:34

Schön, dass du dein Problem selbst lösen konntest. Aber für die Zukunft: "Funktioniert nicht" als Fehlerbeschreibung ist nicht sehr hilfreich. In deinem konkreten Fall wäre es für uns unmöglich gewesen dir zu helfen.