Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FSA

Community-Fossil

  • Private Nachricht senden

21

06.01.2014, 18:24

C-/C++-Quelltext

1
2
3
  if(a >= 0)      //Hier wird ein Errorloop benötigt für else
        cout << "Ist die gegebene Seite die Hypothenuse? (0=n/1=j)\n"; // auf ja/nein tastenbestätigung ändern
        cin >> d;

geht nicht.

C-/C++-Quelltext

1
if(!(d != 0 && d != 1))

Ähm ja also wenn du schon eigene Formeln entdeckst, solltest du auch in der Lage sein solche Sachen anders zu formulieren.

Das genauso:

C-/C++-Quelltext

1
if (!(test3 == a*a)){


Und lösche dieses goto aus deinem Code. Da stellen sich ja alle Haare zu Berge. Es ist für mich nicht wirklich möglich deinen Fehler zu finden, da der Code einfach sehr schrecklich aussieht.
Poste doch mal deine Formel hier, damit man wenigstens ein wenig nachvollziehen kann, was das Programm macht.
Was ist eigentlich "ein Errorloop"?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

22

06.01.2014, 18:25

Ok, machen ich mal weiter, mit dem, was mir auffällt.
Auch nach einem "if" ohne Klammer sollte die nächste Zeile eingerückt sein, ist ja auch ein neuer Scope (hier geht es eigentlich wirklich nur darum die einzelnen scopes visuell von einander unterscheiden zu können).
Als nächstes frage ich mich, warum eigentlich eine endlos for Schleife?
Für die innerste kannst du doch einfach eine while Schleife nehmen, die als Bedingung "finaldone != a*a" hat. Dein Goto macht eigentlich auch keinen Sinn, da es so oder so aufgerufen wird.

Zusätzlich ist die Bedingung in Zeile 48 unnötig kompliziert.
if(d == 0 || d == 1) reicht hier völlig.
Zeile 72 reicht if (test3 != a*a)

Zum Schluss, lass dir noch gesagt sein, das man doubles nicht auf Gleichheit prüft, das wird so in den seltensten aller Fällen mal funktionieren.

23

06.01.2014, 18:33

Hi,

Leider weiß ich auch nicht genau wofür dein Programm ist.

ma eben n paar sachen:


1. Pack die Gotos rein - benutz sie am besten niemals -
eigentlich geht ALLES ohne Gotos - zumindest wüsste ich nicht wo man sie
braucht. du nutzt sie hier um aus der Schleife zu gehen richtig? dann
benutz "break" das schmeißt ihn aus der letzten schleife raus. // okay die variante meines vorredners gefällt mir besser^^ aber break um aus ner schleife zu kommen is immer noch schöner als nen goto - wobei über die eigentliche bedingung der schleife natürlich am sinnvollsten is.
2. schließende Klammern immer in die nächste Zeile alleine. und alles was in den Klammern steht einen weiter eingerückt als die Klammern selbst - spätestens wenn sich das wer anders angucken soll wird das unerlässlich, ist so nicht schön dir beim problem zu helfen.
3. Zeile 111 - kp da is mir erstmal so nix aufgefallen (nutz bis jetz selbst noch kein c++ und hab kein compiler dafür um mir das mal anzuschauen, bzw keine lust mir grad extra visual x++ express zu loaden^^)
was meinst du denn mit er behandelt das wie ne leere Zeile: haut er sofort beim ersten aufruf deiner For-Schleife die Goto aktion raus oder überspringt er die Goto jedes mal und verlässt die Schleife nicht?
falls er die Zeile überspringt schau doch mal im Debugger was für werte er dir da rausgibt oder einfach in deiner Anwendung in der Console die ergebnisse davon ausgeben lassen. vll is die bedingung ja tatsächlich immer erfüllt und der fehler liegt vorher irgendwo ohne dass es dir aufgefallen wäre - kann das leider nicht kontrollieren da ich deine formel noch nicht verstanden hab.


PS: wenn man sich angewöhnt von anfang an das programm richtig zu schreiben /mit einrückungen etc/ braucht mans nich überarbeiten und wenn man sichs erstmal angewöhnt hat gehts genausoschnell wie das programm so zu schreiben die du es gemacht hast.

nur mal aus neugier: welche lektüre hast du denn? wenn sie dir das so empfielt würd ich mir ne neue suchen, wenn sie es dir anders empfielt würd ich näher an der lektüre arbeiten ;)

StupidWiseMan

Frischling

  • »StupidWiseMan« ist der Autor dieses Themas

Beiträge: 12

Beruf: Gymnasiast

  • Private Nachricht senden

24

06.01.2014, 18:41

Ok erstmal vielen vielen Dank an alle von euch!

Ich denke ich schmeiss den Müll von meinem Pc und fang nochmal ganz von vorne an mit allen Tipps usw.
Wenn ich dann nochmal auf Probleme stoße hoffe ich natürlich auf weitere Hilfe. ;)

Nunja dann ma ab an die Arbeit :D

Vielen Dank
Mfg StupidWiseMan

Werbeanzeige