Probleme mit =, & und and

killdmp

Grünschnabel
hi leute ich habe ein prob und komme nicht weiter
ich bin noch recht neu bei c++ oder besser gesagt beim programmieren

C++:
#include <iostream>
#include <stdlib.h>

using namespace std;
int main()
{

	int auswahl;
    char auswahl1;
    cout << "Willkommen Bei meinen spiel fuer win 7"<<endl;
    cout << "Bitte Drueck die eingabe taste"<<endl;
    cin.ignore();
    system("cls");
    cout << "mein spiel"<<endl;
    cout << "(N)Neues Spiel Starten"<<endl;
    cout << "(L)Lade einen Alten Spielestand"<<endl;
    cout << "(O)Optionen einstellen"<<endl;
    cout << "(C)Credits"<<endl;
    cin >> auswahl1;
     if (auswahl1 = n & auswahl1 = N){ //Problem
        cout << "Bitte waehle was du machen willst "<<endl;
        cout << "Haubtquatier: 1  "<<endl;
        cout << "Job Boerse: 2 "<<endl;
        cout << "Automarkt: 3 "<<endl;
        cout << "Aktionen: 4 "<<endl;
        cin >> auswahl;

            if (auswahl == 1){
            cout << "Willkommen im Haubtquatier";
            }
            else if (auswahl == 2){
            cout << "Willkommen bei der Job Boerse";
            }
            else if (auswahl == 3){
            cout << "willkommen auf dem Automarkt";
            }
            else if ( auswahl == 4){
            cout << "Willkommen bei den Aktionen";
            }
            else
            {
            cout <<"Treffe bitte einen neue wahl";
            }

            cin.ignore();

	}
        else if (auswahl1 == l and auswahl1 == L){ //Problem
	cout << "Bitte waehle was du machen willst "<<endl;
	cout << "Haubtquatier: 1  "<<endl;
	cout << "Job Boerse: 2 "<<endl;
	cout << "Automarkt: 3 "<<endl;
	cout << "Aktionen: 4 "<<endl;
	cin >> auswahl;

	if (auswahl == 1){
	cout << "Willkommen im Haubtquatier";
	}
	else if (auswahl == 2){
	cout << "Willkommen bei der Job Boerse";
	}
	else if (auswahl == 3){
	cout << "willkommen auf dem Automarkt";
	}
	else if ( auswahl == 4){
	cout << "Willkommen bei den Aktionen";
	}
	else
	{
	cout <<"Treffe bitte einen neue wahl";
	}

cin.ignore();

	else if (auswahl == o and O){
	cout << "hier sind die otionen hier kannst du nix ändern";
	}
	else if ( auswahl == c and C){
	cout << "das spiel ist von mir";
	}
	else
	{
	cout <<"Treffe bitte einen neue wahl";




	return 0;
}

die roten zeilen gehen nicht ich weiss auch nicht warum könnt ihr mir helfen

ich weiss das da viele rechtschreibfehler drin sind
 
Zuletzt bearbeitet von einem Moderator:
Hi und Willkommen bei tutorials.de,

die Codetags sind fast richtig, aber statt c++ cpp nehmen (p für plus).
Habs ausgebessert. Eine Liste findest du übrigens in meiner Signatur verlinkt.

Zum Code:
Der Compiler müsste da einige Fehler mehr anzeigen,
als nur die roten Zeilen.

Zuerst zu Problemzeile 1:
Vergleichen kann man nicht mit = (das wäre die Zuweisung von Werten), sondern mit ==
Ein normales Und ist nicht &, sondern &&.
Und Buchstaben wie N müssen zwischen 'N' stehen, sonst gilt N als Variablenname
(und es gibt in deinem Programm keine Variable N)

Problemzeile 2:
Außer den Probleme von Zeile 1 ist hier noch das "and".
Auch and kann man nicht für Und nehmen, nur &&

Die genannten Probleme gibts im Code noch öfter..

Bitte in Zukunft aussagekräftige Titel wählen (ausgebessert)
und Netiquette §15 beachten.

Gruß
 
In der Zeile
Code:
if (auswahl1 = n & auswahl1 = N)
gibt es auch noch ein logisches Problem.
Du musst hier || (oder) und nicht && benutzen. Sonst wird die Bedingung NIEMALS zutreffen.
So wie du es jetzt da stehen hast, wird ja (wenn man die Syntax-Fehler mal weg lässt) geprüft ob in der Variablen auswahl1 ein 'n' UND ein 'N' steht. Es kann ja nur eins von beidem zutreffen aber du verlangst, dass irgendwann mal beides gleichzeitig zutreffen soll.

Die Ergebnisse von && und || liegen meist Meilenweit auseinander.

Mal als kleine Denkaufgabe um ein Gefühl für sowas zu kriegen:
Was passiert hier? Macht es dabe einen Unterschied, was der Benutzer eingibt?
Code:
bool b;
cin >> b;
if (b == true || b == false){
   cout << "oder";
}
if (b == true && b == false){
   cout << "und";
}

Ein normales Und ist nicht &, sondern &&.
Wenn er die restlichen Fehler korrigiert und auch ein Oder benutzt sollte das eigentlich keine Probleme machen.
An sich stimmt es schon, dass & das bitweise Und ist und && das logische Und, aber in manchen Fällen kann man die bitweisen Operatoren so nutzen, als währen es logische Operatoren. Und zwar dann, wenn man zwei boolsche Werte miteinander über & verknüpft und nicht Zahlen, die was anderes als 0/false oder 1/true annehmen können.
Und da == (gerade noch) stärker bindet als & ist das hier der Fall.

Trotzdem solle man sich das nicht angewöhnen. Der einzige Fall, wo es wirklich Sinn macht mit bitoperatoren in einer Bedingung zu arbeiten, ist wenn man ein exclusives Oder braucht und keinen unnötig komplizierten Ausdruck haben will. Das exclusive Oder gibt es nämlich nicht als logischen Operator aber wohl als Bitoperator.
Das Zeichen dafür ist ^
 
Zuletzt bearbeitet:
die bedingung aus zeile 3 in meiner kleinen "übungsaufgabe" oben, könnte man übrigens auch so schreiben
Code:
To_B || !To_B
jetzt leßt das mal laut auf englisch vor :D
wie wir sehen hat selbst shakesbear den fehler mit der tautologie gemacht.
 
Hi.
Code:
To_B || !To_B
jetzt leßt das mal laut auf englisch vor :D
wie wir sehen hat selbst shakesbear den fehler mit der tautologie gemacht.
Bitte halte dich an die Netiquette, bzgl. Groß-/Kleinschreibung und Orthographie.

"lesen" schreibt man nämlich immer noch mit normalem "s".

Und der Mann hieß Shakespeare, hatte nichts mit einem Bär zu tun.

Außerdem ist natürliche Sprache nunmal nicht eindeutig, und das englische "or" wie auch das deutsche "oder" nicht mit dem boolschen ODER gleichzusetzen.

Gruß
 
Bitte halte dich an die Netiquette, bzgl. Groß-/Kleinschreibung und Orthographie.
Tut mir leid. Bei den verschiedenen Foren in denen ich bin, wird das überall anders gehandhabt. In einem ist Rechschreibung und Grammatik unter aller Sau und ich finde es auch schon zu schlimm, in einem anderem zählt nur die Grammatik... Da kann man schon mal was durcheinander kommen.
Ich muss gestehen, jetzt fällt mir auch wieder ein, dass das hier was strenger ist. Aber da ich hier seit Ewigkeiten zum ersten Mal wieder was schreibe hab ich das wohl einfach vergessen.

Außerdem ist natürliche Sprache nunmal nicht eindeutig, und das englische "or" wie auch das deutsche "oder" nicht mit dem boolschen ODER gleichzusetzen.
Auch bei der ganzen Grammatik, Rechtschreibung und Netiquette hoffe ich doch, dass du zumindest ein bisschen Spaß verstehst.
Das war ein Scherz und solche sollte man nie zu ernst nehmen ;)
 
Auch bei der ganzen Grammatik, Rechtschreibung und Netiquette hoffe ich doch, dass du zumindest ein bisschen Spaß verstehst.
Das war ein Scherz und solche sollte man nie zu ernst nehmen ;)
Ah, ein Scherz, Schenkelklopfer, Witz, Ulk, Gag.. sowas, ja?! Kenne ich, hab ich schonmal von gehört... ;)

Ich war mir nicht ganz sicher wie es gemeint war, ein Smiley hätte es für mich wahrscheinlich klarer herausgestellt.

Gruß
 
Zurück