If-Else in eine Schleife binden(z.b while Schleife)(C++)?

Screenshot - (Computer, lernen, programmieren)

7 Antworten

Alter heißt auf Englisch "age", nicht "older". ^^

Vom Aufbau her könntest du es mit einer fußgesteuerten Schleife machen.

do
{
  //Eingabe Alter
  //Wenn Alter nicht passt (if older<12), gib aus, dass Alter nicht passt
}while(older<12);

// Hier kannst du mit if zwischen 12-18 und >18 unterscheiden
// <12 musst du nicht mehr prüfen, denn sonst wären wir nicht hier.
if(older<18)
{...}
else
{...}

Vom Sinn her habe ich das nicht so ganz verstanden. Wenn das Alter nicht passt, kann man es solange eingeben, bis es passt? xP

Du könntest allerdings auch einfach, wenn das Alter nicht passt, main nochmal aufrufen.

main()
{...
  if(older<12)
    main();
  else
  {...}
}

Dein allerletzter Vorschlag sollte ganz schnell wieder vergessen werden. Nutze nur normale Schleifen, rufe main nie im Programm selbst auf.

1

In C und C++ ist "main()" KEINE normale Funktion!

Die Besonderheiten sind, dass du das return-Statement weg lassen kannst, keine Adresse der main-Funktion erhältst (z. B. im Zusammenhang mit Funktionszeigern), und main() auch laut Standard nirgendwo in deinem Programm selbst aufrufen kannst.

Auch falls einige Compiler die letzten beiden obigen Punkten erlauben sollten, wirst du mindestens immer eine Warnung bekommen. :)

Aus diesem Grund sollte man "main()" gar nicht erst als "Funktion", sondern einfach nur als Einstiegspunkt (nicht mit "_start", "entry" o. ä. verwechseln!) betrachten. :)

1
@TeeTier

Okey, ich dachte, es wäre eine normale Funktion mit der einzigen Besonderheit, dass beim Start der Anwendung die Funktion automatisch aufgerufen wird.

Wenn man trotzdem Gefallen an der zweiten Variante findet, kann man sich mit einer Umleitung helfen:

main()
{
  meinMain();
}

bool meinMain();
{
  // Obiger Code und dann meinMain rekursiv aufrufen.
}
1

1. older ist das falsche Englische Wort. age wäre richtig.

2. Zeile 13 nutzt du den Bitweisen Und-Operator, als "und"-Vergleich musst du && nutzen.

3. Zudem kannst du die Zeile kürzen. Da die erste Bedingung unwahr ist, muss er ja auf jeden Fall jünger als 18 sein.

} else if (older1 > 12){

4.  Wofür Zeile 19 und 20? Mal abgesehen davon, dass es eigentlich nicht funktionieren sollte. Du kannst nicht einfach einer Variable des Typs String einem Integer direkt zuweisen. 

Zudem wird String older nicht genutzt

5. Zeile 21: while(older1) ist in diesem Fall Unsinn. Die Schleife hat keine Abbruchbedingung und gibt über cout nun endlos den Wert von older1 aus.

6. Zu deinem eigentlichen Problem: Schau dir deinen Code mal genau an.

Zuerst frägst du das Alter ab, gibst dann den entsprechenden String aus (Laden, Seite wird geladen oder not) und wiederholst dann endlos die Ausgabe von older1.

Warum schreibst du den if-Block nicht in die Schleife?

(Wenn du den Rest der Schleife überspringen willst: continue; falls du die Schleife vorzeitig verlassen willst: break; - geht beides auch in einem if-Block)

Java - Zahlen aus String?

Wie kann ich aus einem String die Zahlen zählen?

Hier ist was ich habe:

Was muss ins if rein oder sollte man das anders lösen?

for(int i = 0; i < test.length(); i++) {
    if(    ?    ){
            count ++;
         }

}

...zur Frage

C# welche Schleife wird bei welcher Aufgabe benutzt?

Hi,

ich habe ein Problem, ich weiß was einige Schleifen wie z.B. die While- oder Do-While Schleife tun, weiß aber nie wann ich welche Schleife anwenden muss oder wann ich zum Beispiel ein If benutzen muss, damit das Programm auch funktioniert. Kann mich vielleicht jemand aufklären?

Mit freundlichen Grüßen

...zur Frage

Getter und setter richtig verstanden & vererbung erklären?

Mir ist gerade erst in einem Tutorial auf YouTube nebenbei (es gibt garnicht darum) glaube ich klar geworden, was ein getter und setter bringt, nicht das ich jetzt falsch lerne, frage ich lieber noch einmal nach.

So wie ich es verstanden habe ist ein setter so aufgebaut:

int x = 10; public void setter(int x){ this.x = x }

Er erwartet also einen Wert und gibt einer oberen Variable (die, die man verändern will) den mitgegebenen wert.

Der getter:

int x = 10; public void getter(){ return x; }

Er gibt die oben stehende Variable zurück und kann mithilfe von instanzen aus anderen klassen abgerufen werden

Habe ich das so richtig verstanden, oder ist irgendetwas falsch?

Außerdem noch:

Kann mir nocheinmal jemand an einem beispiel bitte ausführlich vererbung erklären (habe dies schon öfters gefragt, aber nie richtig verstanden, deshalb wäre echt nett, wenn ihr euch auf einen neuen versuch einlasst :D)

LG und schönen Abend noch! ;)

...zur Frage

Java: in eine if-Anweisung eine while-Schleife einbauen?

Hallo! :)

Ich bin derzeit dabei, das Programmieren mit Java zu lernen und beschäftige mich gerade mit if-/else-Anweisungen und Schleifen.

Ich habe eine Aufgabe bearbeitet und dabei eine while-Schleife in eine if-Anweisung gesetzt, also, falls die Bedingung für die if-Abfrage wahr ist, soll unter anderem die while-Schleife ausgeführt werden, jedoch funktioniert das Programm so nicht.

Jetzt frage ich mich, ob es blöd ist, eine while-Schleife in eine if-Anweisung einzubauen? :D

Danke!

...zur Frage

Java Zufallszahlen Programm (for Schleife)?

Ich brauche Hilfe bei einem Programm. In diesem Programm geht es darum, dass der Computer sich eine Zahl zwischen 1 und 100 ausdenkt, welche der Nutzer dann erraten soll. Je nachdem ob die Zahl größer oder kleiner ist wird es dann ausgegeben. Man hat 10 Versuche, doch wenn ich die Zahl in z.B. 5 Versuchen erraten habe fragt mich das Programm trotzdem noch weiter nach der Zahl, so lang bis die 10 Versuche verbraucht sind. Und wie kann ich es schaffen, dass wenn die Zahl nicht erraten wird, dass das Programm sie dann am Ende ausgibt ? das ist das Programm bis jetzt:

//----------------------------------------------Variablendeklaration------------------------------------------ String Eingabe1; int Zahl; int Eingabe;

    Random rand=new Random();
    Zahl= rand.nextInt(100);
    

//-------------------------------------------------Schleife--------------------------------------------------------

    for (int Zähler=0; Zähler<10; Zähler=Zähler+1)
    {
        Eingabe1=JOptionPane.showInputDialog(null, "Geben sie ihre ausgedachte Zahl ein");
        
        Eingabe=Integer.parseInt(Eingabe1);
        

//-------------------------------------------------if-Anweisung-------------------------------------------------- if (Eingabe<Zahl) { JOptionPane.showMessageDialog(null, "Die Zahl ist größer.");}

        else if (Eingabe>Zahl)
        {JOptionPane.showMessageDialog(null, "Die Zahl ist kleiner.");}
        
        else 
        {JOptionPane.showMessageDialog(null,  "Die Zahl ist richtig.");}
        
...zur Frage

C2181: Ungültiges 'else' ohne zugehöriges 'if' - was ist da los?

Hallo zusammen

 

ich bekomme dauernd diese doofe Fehlermeldung wenn ich eine Simple If anweisung schreiben will : 

 

 

{ if ((Alter >= 18) && (Ziel == 1) && (Datum == 0) && (Dauer == 1)); { preisnachlass = 20; } else if  (Ziel == 2); /*Mit else if sagt er mir dauernd: C2181: Ungültiges "else" ohne zugehöriges if; */ { preisnachlass = 0; } else if (Alter < 18); { preisnachlass = 0; } else if ((Alter >= 2) && (Alter < 18)); { preisnachlass = 30; } else  { preisnachlass = 0;  } }     (Mir ist bewusst, dass ich auch die geschweiften klammern weglassen kann.. )    kann mir einer sagen, was da falsch ist ?
...zur Frage

Was möchtest Du wissen?