Magisches Quadrat Endlosschleife



  • CStoll schrieb:

    Die do-while-Schleife wird beendet, wenn die Bedingung false ist. Und wenn du mit Zahlen arbeitest, gilt 0 als falsch - d.h. deine Eingabeschleife wird erst beendet, wenn N%2==0 ist (d.h. bei einer geraden Zahl).
    (das ist ein Grund dafür, solche Konstruktionen zu vermeiden, wenn man nicht genau weiß was man macht :D)

    So mit ==0 habe ich wenigstens schonmal das Endlosding behoben (:. Nur wenn man jetzt 5 Eingibt kommt beispielsweise heraus:
    00703
    400080
    05009
    100100
    06020

    Irgendwo muss doch noch ein denkerfehler leigen aber so 😕



  • Die Lösung wurde schon ein paar mal genannt: Debugger. Außerdem solltest du dir genau überlegen, wie dein Algorithmus funktionieren soll - und das damit vergleichen, was er tatsächlich macht.
    (PS: und setz Leerzeichen zwischen die einzelnen Zahlen, das erleichtert dir die Unterscheidung zwischen "1 23" und "12 3" ;))



  • CStoll schrieb:

    Die Lösung wurde schon ein paar mal genannt: Debugger. Außerdem solltest du dir genau überlegen, wie dein Algorithmus funktionieren soll - und das damit vergleichen, was er tatsächlich macht.
    (PS: und setz Leerzeichen zwischen die einzelnen Zahlen, das erleichtert dir die Unterscheidung zwischen "1 23" und "12 3" ;))

    Ich habe mich ja extra hier angemeldet um was zu lernen oder Probleme zu lösen 😉
    Ich bin noch kein Fachmann in C+ da ich vor gut einem viertel jahr angefangen habe c++ zu lernen.
    Daher tut es mir leid das ich nicht weiß was ein Debugger macht oder was ich für ein Programm brauche!
    um das Schreiben "benutz Google" vorweg zunehmen werde ich mich da morgen mal schlau machen.
    Gute nacht an alle
    mfg

    Um noch etwas dran zu hängen..
    Herausgefunden habe ich auch das mein Programm bei einer Eingabe von 5 genau die zahlen von 1 bis 10 ausgibt also 5*2 bei einer Eingabe von 11 wären das denn die Zahlen 1-22 // 11*2 Den rest füllt er einfach mit Nullen was er nciht darf 😃



  • In Kurzfassung: Mit dem Debugger kannst du Schritt für Schritt beobachten, wie dein Code abgearbeitet wird (inklusive der Variablenwerte). Die genauen Möglichkeiten unterscheiden sich dabei, aber die meisten Entwicklungsumgebungen dürften einen dabei haben.
    (womit entwickelst du eigentlich?)



  • CStoll schrieb:

    (womit entwickelst du eigentlich?)

    Ich hatte einmal wScite nur da funktioniert der compiler nicht und mit dem Programm womit ich alle mache heißt Dev c++ andere kenn ich nicht 😕
    Für neue Vorschläge immer offen



  • MaiKzZ schrieb:

    mit dem Programm womit ich alle mache heißt Dev c++ andere kenn ich nicht 😕

    Ich denke mal, wenn du damit zufrieden bist, kannst du auch dabei bleiben (aber ich kenne mich nicht gut genug mit den Entwicklungsumgebungen aus, um da eine Empfehlung auszusprechen). Und eine kurze Google-Recherche verrät auch, daß er einen Debugger mitliefert.



  • hol dir visual C++ 2010 express edition
    der ist besser, schneller, schöner, cooler, sicherer, effektiver, stabiler, cooler, hilfreicher, hab ich cooler schon erwähnt?

    und kostenlos und aktuell !
    und das debuggen ist auch nicht mehr als ein mausklick (oder doppelklick)



  • Skym0sh0 schrieb:

    hol dir visual C++ 2010 express edition

    habe ich mir gleich mal geladen und getest.
    soweit funktioniert alles
    jedoch nach dem Debuggen sagt er :

    "Magisches Quadrat.exe": "C:\Users\maik\Desktop\Magisches Quadrat\Debug\Magisches Quadrat.exe" geladen, Symbole wurden geladen.
    "Magisches Quadrat.exe": "C:\Windows\System32\ntdll.dll" geladen, Cannot find or open the PDB file
    "Magisches Quadrat.exe": "C:\Windows\System32\kernel32.dll" geladen, Cannot find or open the PDB file
    "Magisches Quadrat.exe": "C:\Windows\System32\KernelBase.dll" geladen, Cannot find or open the PDB file
    "Magisches Quadrat.exe": "C:\Windows\System32\msvcp100d.dll" geladen, Symbole wurden geladen.
    "Magisches Quadrat.exe": "C:\Windows\System32\msvcr100d.dll" geladen, Symbole wurden geladen.
    Der Thread 'Win32-Thread' (0x554) hat mit Code -1073741510 (0xc000013a) geendet.
    Das Programm "[5532] Magisches Quadrat.exe: Systemeigen" wurde mit Code -1073741510 (0xc000013a) beendet.

    Ist das normal oder hab ich irgendetwas falsch installiert ?

    P.S. Ich habe mit eurer Hilfe nun mein Programm fertig (: es fuinktioniert.
    Vielen Danke! Es war einfach nur die erste do-while Schliefe falsch.
    vielen vielen Danke.
    solltet ihr wissen wollen wie der fertige quellcode aussieht kann ich ihn gerne noch einmal posten.
    mfg



  • Den Debugger benutzt man normalerweise mit Breakpoints, die kann man setzen (wie kommt auf die IDE an). Das Programm startet und wird dann bis zum Breakpoint ausgeführt und angehalten, dann kannst du in der IDE Variabeln usw. inspizieren und schrittweise weitergehen. Das gibts meist 2fach, einmal den kompletten Schritt weitergehen oder in den Schritt reingehen (zB bei Methodenaufrufen wird beim ersten die Methode komplett ausgeführt, beim zweiten springst du mit in die Methode rein und kannst dort schrittweise weitergehen). Ohne Breakpoints rasselt das nur komplett durch und ermöglicht dir nur im Fehlerfall (SigSev o.ä.) die letzten Variabeln zu inspizieren - du hast vermutlich keine Breakpoints gesetzt.



  • Der Rückgabewert sollte im Normalfall 0 sein und nicht -1073741510.

    Wie ich schon ein paar mal gesagt habe kriege ich eine Endlosschleife in der zweiten Loop. Dass du die anscheinend nicht gekriegt hast liegt womöglich an der Initialisierung des Arrays.


Anmelden zum Antworten