Hilfe beim Programm

  • Naja.. überleg dir doch mal was die 3 Zeilen machen :lauscher:



    WENN zeile ungleich 5
    setze status auf falsch
    break



    und wenn du trotz überlegen nicht weiterkommst, würde ich dir einen schreibtischtest nahelegen. ;)


    dafür machst du eine tabelle mit allen wichtigen variablen ( zeilen , zeile.length ,status, ausgabe )
    gehst das programm schritt für schritt durch.. und schreibst für jeden durchlauf die werte mit die die variablen annehmen ..


    ich hab irgendwie das gefühl dass du dir zu wenig überlegst was dein programm eigentlich tut.. ;)

  • hmm.. ich denk mir mal er prüft schon nach der ersten zeile und weil die nicht gleich 5 ist, bricht er ab.. versteh aber nicht wieso er mir nicht die chance gibt mehr einzugeben ...

  • hmm.. ich denk mir mal er prüft schon nach der ersten zeile und weil die nicht gleich 5 ist, bricht er ab.. versteh aber nicht wieso er mir nicht die chance gibt mehr einzugeben ...



    natürlich prüft er nach der ersten zeile.


    die if-überprüfung findet INNERHALB der schleife statt ..., nicht danach.
    (und der scanner liest zeilenweise ein , jeden schleifendurchlauf eine zeile.


    weisst du wie eine while schleife bzw schleifen generell funktionieren bzw abgearbeitet werden? :engel:



    da solltest du dich mal bisschen mehr schlau machen..


    wo fängt deine schleife an .. und wo ist sie zuende... und wie wird die schleife vom prinzip her ausgeführt?
    in welcher reihenfolge und wie oft werden die anweisungen in der schleife ausgeführt,..
    wann wird die schleife abgebrochen, .. wann wird die schleifenbedingung überprüft... wann werden schleifenzählvariablen erhöht sofern vorhanden....??

  • ja anscheinend denk ich falsch.. grml..

    wie schleifen allg funktioniert versteh ich eigentlich schon.

    wenn es klappt dass wenn ich frage ob mehr zeilen als 5 da sind, falsche eingabe ausgegeben wird, sobald 6 zeilen dastehn.. wieso klappt es dann nicht wenn ich abfrage ob 5 zeilen da sind.. ?! es funktioniert ja auch vorher mit der zeilenlänge

  • ja anscheinend denk ich falsch.. grml..

    wie schleifen allg funktioniert versteh ich eigentlich schon.

    wenn es klappt dass wenn ich frage ob mehr zeilen als 5 da sind, falsche eingabe ausgegeben wird, sobald 6 zeilen dastehn.. wieso klappt es dann nicht wenn ich abfrage ob 5 zeilen da sind.. ?! es funktioniert ja auch vorher mit der zeilenlänge



    tust du ja nicht.


    du fragst nicht ab "ob 5 zeilen da sind"





    du fragst "sind ungleich 5 zeilen da"
    ungleich 5 heisst aber mehr oder weniger als 5... :wave:



    wenn du auf "sind 5 zeilen da bzw hat zeilen den wert 5" abfragen würdest ,.. würde es natürlich genauso klappen.


    das problem ist aber das dein programm nicht das tut , was du dir vorstellst, dass es tun müsste..



    vielleicht hilft ein schreibtischtest.. oder auch nur mal versuchen den programmcode in pseudocode oder ein struktogramm zurückzuverwandeln.
    weiss nicht mit was du dir leichter tust.




    /edit:
    zu dem "es funktioniert ja auch mit der zeilenlänge":
    bist du dir da 100% ig sicher? ;)


    Ich glaube nicht , dass das Programm funktioniert, bzw besser die Anweisung mit der Zeilenlänge tut zwar etwas, aber nicht das was du möchtest.


    Ich würde dir - nochmal - dazu raten dein Programm ausführlich zu testen.
    Versuche nicht nur bei der Zeilenlänge zb .. 3 Zeichen einzugeben und zu sagen "Juhuuu funkt.."


    Sondern gib 2 Zeichen ein,... notier dir was passiert, dann gib 3 Zeichen ein ... , dann gib 4 Zeichen ein, und schau was passiert ...
    und dann gib mal eine zufällige Zahl von Zeichen ein. ... und schau immer was das Programm in den Testfällen macht... und ob es so reagiert wie "erwartet".

  • ja bei der zeilenlänge bin ich mir 100% sicher. da kommt NUR bei 3 zeichen OK.

    bin jetzt wieder einmal alles der reihe nach durchgegangen.. hab die if-abfrage (zeilen != 5) außerhalb der schleife hingeschrieben und jetzt funktionierts. :)

    Danke für die ewige Geduld und Hilfe =)

  • ja bei der zeilenlänge bin ich mir 100% sicher. da kommt NUR bei 3 zeichen OK.

    bin jetzt wieder einmal alles der reihe nach durchgegangen.. hab die if-abfrage (zeilen != 5) außerhalb der schleife hingeschrieben und jetzt funktionierts. :)



    ja wenn das so gewollt ist , passt dafür auch !=3
    (dachte du wolltest weniger als 3 zeilen oder genau 3 zeilen)


    aber bei der zeilenanzahl-abfrage war das sicherlich nicht so gewollt, dass es immer wenn die zeilenanzahl ungleich 5 ist abbricht...


    ausserhalb der schleife die zeilenanzahl abfrage:
    heisst das er solange einliest solange du was eingibst ( könnten auch 100 zeilen sein).. und wenn nichts mehr kommt geht er aus der schleife und überprüft dann ...


    naja.. selbst wenns funktioniert keine ideale lösung .. , weil du theoretisch eine abbruchbedingung zusätzlich in der schleife brauchst.. oder es aber möglich wäre 10000 zeilen einzugeben bevor es überprüft wird ...


    warum schreibst du nicht einfach in der schleife if (zeilen == 5) status = false; break; ???


    denkst wohl zu kompliziert........

  • so jetzt hab ichs nochmal umgeschrieben.. jetzt müssten alle zufrieden sein..hoff ich ;)

    also zuerst hab ich das mit dem
    if (zeilen == 5) {
    status = true;
    break;
    } else {
    status = false;
    }
    ohne die zeilenLÄNGE abzufragen hingeschrieben.. hat funktioniert. also hab ich dann die zeilenlänge-abfrage nach der zeilenanzahl-abfrage hingeschrieben... jetzt funktionierts. und alles innerhalb der schleife ^^

  • Das würde dann bedeuten, dass, sobald die fünfte Zeile eingelesen wird, die Eingabe automatisch als falsch bewertet wird.


    ja würde es bedeuten.



    Und wo überprüfst du dann überhaupt, ob weniger als fünf Zeilen eingegeben wurden?


    garnicht. hat allerdings ihre erste lösungsvariante mit der überprüfung im schleifenkopf auch noch nicht gemacht, soweit ich das in erinnerung hab.


    wenn sie das möchte, dann (zusätzlich) eine zweite if abfrage nach der schleife die untergrenze abfragen lassen .....


    oder den benutzer nicht aus dem programm lassen bevor er nicht genug zeilen eingegeben hat... :devil: