while & if?



  • hallo, kann mir einer vielleicht mal die while schleife und das mit dem if erklären? denn ich blicke da noch nicht ganz durch...



  • Hi,

    1. Die While-Schleife wiederholt die Anweisungen in ihr, solange die Kopf-Bedingung wahr (true) ist:

    int i;
    while ( i < 10 ) {
    ++i;
    }
    

    Hier wird solange i kleiner als 10 ist die Anweisung ++i (erhöhe i um 1) ausgeführt, bis i schließlich 10 oder größer ist und die Schleife verlassen wird.

    2. If-Abfragen dienen zur bedingten Ausführung. Ist der Ausdruck nach dem If wahr, wird der Code danach ausgeführt, ähnlich wie in der While-Schleife aber nur ein mal:

    if ( i < 10) {
    cout<<"i ist kleiner als 10!"<<endl;
    }
    

    Falls i 10 oder größer ist wird die Anweisung im If-Block nicht ausgeführt.

    Gruß,
    Neo



  • aso, ich glaub ich habs verstanden... ich probiers mal aus.
    THX für die hilfe 🙂



  • kann mir auch einer ein paar übungsaufgaben für die while schleife und die if abfrage geben? wäre echt nett 🙂



  • Vielleicht dies hier

    Gegeben sind drei ganze positive Zahlen a, b und c.

    Sotieren sie sie mit geeigneten if-Abfragen so, dass gilt
    a > b > c.



  • also soll ich drei zahlen eingeben und die dann nach der grösse sortieren oder wie meinst du das?



  • Genau so.



  • aso.. dann probier ich anfänger das mal. mal gucken obs klappt

    eine frage kann man das so schreiben?

    if(zahl1>zahl2&&zahl1>zahl3)
    ...



  • Man kann es so schreiben, ja.

    Ob es die optimalste Lösung zur Aufgabe ist, lasse ich mal im Raum stehen.



  • was ist denn die optimale lösung?



  • Das wäre nicht sinn der Aufgabe, gleich die Lösung hinterher zu schicken, probier einfach mal ein bißchen rum.



  • also ich hab das so geamcht:

    #include<iostream.h>
    #include<conio.h>

    void groesstezahl(void)
    {
    int zahl1,zahl2,zahl3;
    int i;

    cout<<"Geben Sie die erste Zahle ein: ";
    cin>>zahl1;
    cout<<"Geben Sie die zweite Zahle ein: ";
    cin>>zahl2;
    cout<<"Geben Sie die dritte Zahl ein: ";
    cin>>zahl3;

    if(zahl1>zahl2&&zahl1>zahl3)
    {
    cout<<zahl1;
    i++;
    }
    if(zahl2>zahl1&&zahl2>zahl3)
    {
    cout<<zahl2;
    i++;
    }
    if(zahl3>zahl1&&zahl3>zahl2)
    {
    cout<<zahl3;
    i++;
    }
    }

    void main(void)
    {
    clrscr();
    groesstezahl();
    getch();
    }

    eine frage noch, wie kann ich diesen kasten für den quellcode machen?



  • Zum Quellcodekasten:

    Unter den Smileys, wenn du einen Beitrag schreibst, steht irgendwo links oben
    "C/C++". Daruf klicken. Dann Code einfügen. Ein weiteres mal auf "C/C++" klicken. Fertig. Bsp:

    #include<iostream.h> 
    #include<conio.h> 
    
    void groesstezahl(void) 
    { 
    int zahl1,zahl2,zahl3; 
    int i; 
    
    cout<<"Geben Sie die erste Zahle ein: "; 
    cin>>zahl1; 
    cout<<"Geben Sie die zweite Zahle ein: "; 
    cin>>zahl2; 
    cout<<"Geben Sie die dritte Zahl ein: "; 
    cin>>zahl3; 
    
    if(zahl1>zahl2&&zahl1>zahl3) 
    { 
    cout<<zahl1; 
    i++; 
    } 
    if(zahl2>zahl1&&zahl2>zahl3) 
    { 
    cout<<zahl2; 
    i++; 
    } 
    if(zahl3>zahl1&&zahl3>zahl2) 
    { 
    cout<<zahl3; 
    i++; 
    } 
    } 
    
    void main(void) 
    { 
    clrscr(); 
    groesstezahl(); 
    getch(); 
    }
    

    [EDIT]
    Hast du das Programm schon ausprobiert? Ich habe z.Z. keine Zeit dazu, es zu studieren.
    [/EDIT]

    [EDIT2] Rechtschreibfehler korrigiert [/EDIT2]



  • das programm läuft



  • Aber es macht nicht das, was es soll. Wenn ich eintippe:

    Zahl1 = 35
    Zahl2 = 20
    Zahl3 = 400
    

    Dann gibt er mir nur die letzte Zahl aus. Das Programm soll diese eingegebenen
    Zahlen sortieren und dann sortiert ausgeben. Also das gilt:

    Zahl1 > Zahl2 > Zahl3

    (Vielleicht habe ich mich mit der Aufgabenstellung zu undeutlich ausgedrückt).
    Dein Programm vergleicht diese Zahlen nur und gibt die Zahlen einfach aus,
    ohne sie zu sortieren. Schau dir das Programm nocheinmal an.

    Ich hoffe, ich konnte helfen.


Log in to reply