Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

C++ - if-Anweisung funktioniert nicht richtig

<<< zurück   -1- -2-  
Spasslex - 114
Experte (offline)

Dabei seit 09.2006
1308 Beiträge
Geschrieben am: 30.08.2011 um 13:01 Uhr

Zitat von __etnies__:


if (start == 1)
{
cout << "Los gehts! " << endl;
}




Eigendlich ist das schon richtig, denn nach der Bedingung 1 wird der Text "Los gehts! " ausgegeben. Danach ist die If-Bedingung zu ende und das Programm springt an den nächten Punkt. Ich denke, wenn Du in dem Block keine weiteren Befehle abarbeiten möchtest, führt das Programm einen Exit-Befehl aus da er zum Programmende kommt.

Die URL wurde geblockt (keine Werbung mehr auf TU) :-)

asddddds - 82
Halbprofi (offline)

Dabei seit 03.2010
273 Beiträge
Geschrieben am: 30.08.2011 um 13:05 Uhr

:daumenhoch:
__etnies__ - 30
Profi (offline)

Dabei seit 11.2008
727 Beiträge

Geschrieben am: 30.08.2011 um 13:22 Uhr

Auf die Frage, ob danach noch etwas kommt, ja tut es ;)
Wenn ihr wollt könnt ihr jetzt hier den ganzen bisherigen Quelltext anschauen.

Zitat:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name;
string vname;
string str;
string ort;
float alter;
float hsn;
float plz;
int start;
int pnk;
char eingabe;




cout << "Willkommen zu unserem Bewerbungstest" << endl;
cout << "Bitte geben Sie ihre persönlichen Daten ein : " << endl << endl;

cout << "Name : ";
cin >> name;

cout << "Vorname : ";
cin >> vname;

cout << "Alter : ";
cin >> alter;

cout << "Strasse : ";
cin >>str;

cout << "Hausnummer : ";
cin >> hsn;

cout << "Postleitzahl : ";
cin >> plz;

cout << "Wohnort : ";
cin >> ort;

cout << endl << endl;

cout << "Danke fuer Ihre Eingabe." << endl << endl << endl;

cout << "Bei den folgenden Fragen koennen sie maximal 6 Punkte vergeben." << endl;
cout << "Sie muessen nicht alle 6 Punkte vergeben. " << endl << endl << endl;

cout << "Wollen sie beginnen? " << endl;
cout << "[1] ja " << endl << "oder " << endl << "[0] nein " << endl;
cin >> start;




Zitat:

if (start == '1')
{
cout << "Los gehts! " << endl;
}

else
{
cout << "Falsche Eingabe" << endl;
return 0;
}




cout << "1. Arbeiten sie gerne im Team? " << endl;
cout << "[][][]|[][][]" << endl;
cout << "Anzahl Punkte : ";
cin >> pnk;

if ((pnk > 1) && (pnk < 7))
{
cout << "Sie haben " << pnk << " Punkte vergeben" << endl;

}

else
{
cout << "Falsche Eingabe! " << endl;
return 0;
}







return 0;

}






Und da ist die if-Schleife eben das Problem. Ich komm nicht zu meiner ersten Frage.
Wenn ihr Ideen habt wie man es anderst lösten könnte wäre ich auch dafür offen, nur berücksichtigt ich bin Anfänger und kann nocht nicht arg viel ;)

Gruß Michi
spark82 - 43
Halbprofi (offline)

Dabei seit 11.2006
240 Beiträge

Geschrieben am: 30.08.2011 um 13:35 Uhr

und was steht jetzt in 'start' drin, wenn die else-Bedienung abbricht? Lass das doch mal ausgeben.

Das schlimmste an Zensur ist XXXXXXXX XXXXXX.

__etnies__ - 30
Profi (offline)

Dabei seit 11.2008
727 Beiträge

Geschrieben am: 30.08.2011 um 13:44 Uhr

Wie kann ich schauen was in 'start' drin steht?
Sorry fals die Frage doof rüber kommt ;)
Pratsch - 31
Champion (offline)

Dabei seit 07.2009
2821 Beiträge

Geschrieben am: 30.08.2011 um 14:09 Uhr

Zitat von __etnies__:

Wie kann ich schauen was in 'start' drin steht?
Sorry fals die Frage doof rüber kommt ;)


Mit dem Debugger.

awa

bredator - 41
Champion (offline)

Dabei seit 03.2008
5319 Beiträge

Geschrieben am: 30.08.2011 um 14:16 Uhr
Zuletzt editiert am: 30.08.2011 um 14:23 Uhr

Zitat von __etnies__:

Wie kann ich schauen was in 'start' drin steht?
Sorry fals die Frage doof rüber kommt ;)


Wenn du mit einer IDE arbeitest (z.B. Visual Studio, Eclipse...), dann ist dort schon ein Debugger an Bord. Wie man diesen benutzt, solltest du dich selbst dazu informieren.

Zudem...

Du hast eine Verzweigung drin. Du speicherst deine Aufgabe als Int ab... so weit so richtig. Dann prüfst du mit den Anführungszeichen aber auf einen Char, was natürlich in die Hose geht.

--> Anführungszeichen weg --> if (start == 1) --> Geht

Lache nicht über jemanden, der einen Schritt zurück macht. Er könnte Anlauf nehmen.

__etnies__ - 30
Profi (offline)

Dabei seit 11.2008
727 Beiträge

Geschrieben am: 30.08.2011 um 14:31 Uhr

Danke für die Tipps. Jetzt komme ich über die if-Anweisung drüber.

Pratsch - 31
Champion (offline)

Dabei seit 07.2009
2821 Beiträge

Geschrieben am: 30.08.2011 um 14:33 Uhr

Zitat von bredator:

Zitat von __etnies__:

Wie kann ich schauen was in 'start' drin steht?
Sorry fals die Frage doof rüber kommt ;)


Wenn du mit einer IDE arbeitest (z.B. Visual Studio, Eclipse...), dann ist dort schon ein Debugger an Bord. Wie man diesen benutzt, solltest du dich selbst dazu informieren.

Zudem...

Du hast eine Verzweigung drin. Du speicherst deine Aufgabe als Int ab... so weit so richtig. Dann prüfst du mit den Anführungszeichen aber auf einen Char, was natürlich in die Hose geht.

--> Anführungszeichen weg --> if (start == 1) --> Geht


Am Anfang hatte er es noch richtig. o.O

Zitat:

if (start == 1)
{
cout << "Los gehts! " << endl;
}


:-D

awa

Klischeepunk - 41
Champion (offline)

Dabei seit 01.2005
8907 Beiträge

Geschrieben am: 30.08.2011 um 23:18 Uhr

@etnies: 1 Punkt vergeben ist btw. nicht möglich ;P
Interessant, dass du es am Anfang richtig hattest und auch die Beschreibung entsprechend war, eigentlich hätte alles laufen müssen - wenn er "Los gehts" ausgibt, ist er im "if" zweig, sprich die bedingung wurde erfüllt - ich frage mich was 2/3 der Posts hier sollen, wenn er einmal die bedingung "true" hat, kann er unmöglich jemals in den "else" zweig kommen, das geht schlichtweg nicht, außer der compiler baut grobe scheiße, richtig grob, und in dem fall - weg mit dem compiler. Falls von anfang an auf '1' geprüft wurde - nun hier wurde auf nen character geprüft, dass das bei cin >> INT; schiefgehn muss ist logisch.

Dieser Post wurde 2 mal ROT-13 verschlüsselt.

spark82 - 43
Halbprofi (offline)

Dabei seit 11.2006
240 Beiträge

Geschrieben am: 31.08.2011 um 07:21 Uhr
Zuletzt editiert am: 31.08.2011 um 07:22 Uhr

Zitat von __etnies__:

Danke für die Tipps. Jetzt komme ich über die if-Anweisung drüber.

..und woran lags nun?

Herausfinden was in start steht geht mit dem Debugger - oder einfach mit:

Zitat:


cout << "in start steht " << start << endl;

, direkt über der If-Bedienung ;)

Das schlimmste an Zensur ist XXXXXXXX XXXXXX.

Klischeepunk - 41
Champion (offline)

Dabei seit 01.2005
8907 Beiträge

Geschrieben am: 31.08.2011 um 13:52 Uhr

Kollege meinte vorher, dass der Borland Builder nach solchen "if" verzweigungen ggf. nicht korrekt weiterarbeitet nach den "if-else Blöcken"

Sollte das der Fall sein, ab in die Tonne mit dem Compiler!

Dieser Post wurde 2 mal ROT-13 verschlüsselt.

<<< zurück
 
-1- -2- [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -