So ich habe da mal eine Konsolenanwendung geschrieben mit c++ jedoch funktioniert eine Bedingung nicht Programm wird aber ausgeführt ?

...komplette Frage anzeigen Der Sourcecode - (programmieren, Informatik, Programmierung)

2 Antworten

Also, so nach dem ersten drüber gucken sollte deine Logik eigentlich funktionieren. Ich verstehe es gerade auch nicht, bin aber gerade auch auf der Arbeit und kann es nicht ausprobieren.

Generell ist es aber übersichtlicher, solche Bereichsprüfungen von unten aufzubauen, vom kleinsten Wert zum größten. Andersrum passieren zu leicht Denkfehler.

Dein Konstrukt könnte also besser so aussehen:

// Pseudocode
WENN unter 12 -> kein Zugang
SONST WENN unter 18 -> eingeschränkt
SONST -> Vollzugriff

Zusätzlich noch ein paar Anmerkungen:

Die Signatur

int main(void)

ist nicht zulässig. Entweder

int main()

oder

int main(int *argc, char *argv[])

Deine Einrückungen sind unübersichtlich. Schau dir im Internet mal ein paar verbreitete Einrückungs-Stile an und entscheide dich für einen davon, und halte den dann konsequent ein.

cin.sync()

brauchst du nicht, lass das einfach weg, bis du wirklich weißt, was das tut und wozu man es wie benutzen kann.

Antwort bewerten Vielen Dank für Deine Bewertung

if ( alter < 12 ) {

// nix

} else {

  // ab hier ist klar das es älter als 11 ist

  if ( alter > 17 ) {

     // ab hier ist klar das es 18 und älter ist

     //voll modus

  } else {

    // bleibt nur noch alles was nicht jünger als 12 ist und nicht älter als 17

    // eingeschränkt

  }

}


Antwort bewerten Vielen Dank für Deine Bewertung
manu435 28.10.2015, 08:53

Also muss ich alles umschreiben ???

0
RakonDark 28.10.2015, 08:53
@manu435

sehen wir hier mehr als du zeigst ? nein , haben wir eine glasskugel ? nein .

ich sehe da nur das was geschrieben wird und weiss nicht was du wie machst .

0
RakonDark 28.10.2015, 09:05
@RakonDark

wenn du dich fragst wo dein cin.sync kommt, nach dem geschachtelten else {} den dann ist es ja mindestens 12 und soll ausgeführt werden .  du könntest auch quit(0) nehmen in der < 12 if bedingung , wenn du es nur davor setzen willst . ansonsten wäre es ja nur eine klammer zu setzen nach all dem code der ausgeführt werden soll . .

0
RakonDark 28.10.2015, 09:15
@RakonDark

@manu435

deswegen auch kein else if , sondern die extra klammern

also else { if () {} else {} cin.sync ... }

0
manu435 28.10.2015, 09:47

habs verstanden alles gut danke!

0
spaghetticode 28.10.2015, 10:33

Viel zu kompliziert. Das geht auch einfacher ohne Verschachtelung.

0

Was möchtest Du wissen?