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

30.04.2009, 17:31

Problem mit while-Schleife!...

Hi@all,

Hab die Aufgabe programmiert und alles funktioniert prächtig. Nur die Zusatzfunktion die ich ausprobieren wollte, will nicht...

Ich möchte einfach nur mit e oder E das Programm verlassen. Bei falscher Eingabe wird die Schleife wiederholt. Die Anzeige mit dem Befehl "if" klappt auch aber die while-Schleife wird nicht unterbrochen...

Kann mir jemand bitte das Problem sagen?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
    // HIER IST DAS PROBLEMM

    // Wieso endet mein Programm bei e oder E nicht?

    while ((Ende != 'e') || (Ende != 'E'))
    {
    cout << "\n\n\n\nUm das Programm zu beenden tippen Sie e oder   E ein: ";
    cin >> Ende;

    if ((Ende == 'e') || (Ende == 'E'))
        cout << "Sie haben es geschafft! Programm wird beendet!" << endl;
    else
        cout << "Leider eine falsche Eingabe! Versuchen Sie es erneut!" << endl;
    }

Danke schon mal :)

Edit von Fred: CPP-Tags eingefügt

2

30.04.2009, 17:33

EDIT!

die Variable "Ende" habe ich weiter oben im Programm so deklariert:

char Ende;

4

30.04.2009, 17:40

Ganz einfach:

Zitat

while ((Ende != 'e') || (Ende != 'E'))


Entweder es wurde 'e' oder 'E' gedrückt. Wenn nun 'E' gedruckt wurde, läuft die schleife trotzdem weiter, da 'e' nich nicht gedrückt wurde. versuch mal das hier:

Zitat

while (Ende != 'E')

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

30.04.2009, 18:39

Beziehungsweise:

C-/C++-Quelltext

1
while(Ende != 'e' && Ende != 'E')

Das ist gerne ein Fehlergrund, weil es ja logisch ist, dass das Programm nur beendet wird, wenn e ODER E gedrückt wurde.
Da du mit while aber definierst wann das Programm nicht beenden soll, musst du auch das rumdrehen. '

6

01.05.2009, 00:20

Vielen Dank für eure Antworten! :-)

Ja ich habe einen Denkfehler gemacht! Anstatt || hätte ich logischerweise && nehmen müssen.

Gruß!

7

01.05.2009, 17:10

Notfalls nimm std::tolower(Ende) == 'e' ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige