Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Das ist schon klar. Nicht klar ist, was du immer wieder mit dem vorgeblich funktionierenden Code für die IP-Adresse willst. Glaubst du, dass man daraus erkennen kann, welchen Zweck das case-Statement hat?
  2. Das machst du doch ohnehin schon, mit DirectionX und (mutmaßlich) DirectionY. Du kannst aber zu diesem Zeitpunk bereits ausrechnen, wo die nächste Kollision erfolgen wird. D.h. wenn die Steine sich nicht bewegen, und es nur einen Ball gibt. Wenn du nicht vorhersehen kannst, ob ein Stein später noch da ist, wo er jetzt ist, musst du die Kollisionsberechnung in jedem Frame machen.
  3. Ja, das gleiche hast du gestern schon geschrieben. Bitte kein Threadpushing, siehe Boardregeln. Mir ist nicht klar, was du damit sagen willst.
  4. In C++ solltest du Arrays nach Möglichkeit vermeiden. Meistens ist es besser, std::vector zu benutzen. Diese Klasse stellt einen zusammenhängenden Speicher für Objekte desselben Typs bereit, kann dynamisch wachsen und kümmert sich selbst um die Speicherverwaltung.
  5. Dann solltest du sie nochmal lesen. Programmieren kann man nur, wenn man weiß, was man tut.
  6. Beispiel: Der Benutzer gibt 5 ein, das Programm gibt 15 aus. Cin und cout sind dir bekannt?
  7. Nach jeder Richtungsänderung des Balls kannst du ermitteln, mit welcher Kante welches Steins er als nächstes kollidieren wird, indem du den Schnittpunkt deiner Ball-Bewegungsgeraden mit den Steinkanten ermittelst. Du brauchst dabei immer nur zwei der vier Steinkanten zu prüfen. Wenn der Ball nach rechts und unten fliegt, kann er nur mit der linken oder oberen Kante eines Steins kollidieren.
  8. Das kommt nicht hin. Die 180°-Regel passt nur, wenn die Fläche, mit der kollidiert wird, genau senkrecht zur aktuellen Bewegungsrichtung steht. Man muss bei der Kollision des Balls mit einem Stein prüfen, ob der Ball gegen eine senkrechte oder eine waagerechte Kante des Steins gestoßen ist. In Abhängigkeit davon wechselt entweder die X- oder die Y-Komponente der Bewegungsrichtung ihr Vorzeichen. Man kann noch Sonderfälle für Kollisionen mit den Ecken einbauen, aber es sollte zuerst auch ohne gehen.
  9. Wenn du jeden Thread startest und gleich danach darauf wartest, führst du doch wieder nur alles nacheinander aus. Ich würde das so machen: Ausführen: a Thread starten: b Ausführen: c Warten auf b-Thread usw.
  10. Du brauchst nur einen neuen Thread für b oder c, nicht für beide. Außerdem ist es nicht sonderlich sinnvoll, auf einen Thread zu warten, bevor du ihn startest.
  11. Du darfst nicht vergessen, an den Stellen, an denen die parallelen Operationen wieder zusammenlaufen, auf die jeweiligen Threads zu warten.
  12. Ich finde es etwas seltsam, dass du bei einer Pseudocode-Aufgabe irgendwelche konkreten Implementierungen explizit nicht benutzen darfst. Was darfst du denn benutzen? Hast du da ähnlich konkrete Anweisungen?
  13. Klotzkopp

    Dezimal zu dual

    Nein, das ist für einen 32-Bit-int der richtige Wert: 0x80000000 Damit hast du einen Underflow. Nein, das soll eine Bitmaske sein. Ein Wert, in dem jeweils nur ein einziges Bit gesetzt ist, angefangen mit dem höchsten. Bei jedem Schleifendurchlauf wird der Wert um 1 nach rechts geschoben, so dass das nächstkleinere Bit gesetzt ist, solange bis der Wert 0 erreicht.
  14. Nein, kann ich nicht. Du hast den Code der äußeren Funktion (die ich in meinem Beispiel "foo" genannt habe) nicht vollständig gezeigt. Das kann dir niemand beantworten, weil niemand außer dem Autor des Codes wissen kann, welchen Zweck diese case-Anweisung hat.
  15. Du hast: void foo() { // bla static void GetMACaddress() { // blubb } // blabla }[/code] Du brauchst: [code] static void GetMACaddress() { // blubb } void foo() { // bla GetMACaddress(); // blabla }
  16. Klotzkopp

    Dezimal zu dual

    sizeof ist ein Operator, kein Befehl. Befehle gibt's eigentlich in C und C++ gar nicht. sizeof gibt die Größe (Speicherbedarf) eines Typs (oder des Typs eines Ausdrucks) zurück, und zwar zur Compilezeit (Ausnahme: VLAs in C99). sizeof( char ) ist per Definition 1. Wenn man sizeof mit Typen benutzt, muss man Klammern benutzen. Bei Ausdrücken kann man die Klammern weglassen. Richtig.
  17. Klotzkopp

    Dezimal zu dual

    Das ist auch Quatsch. Du meinst vermutlich 1 << (sizeof(int) * 8 - 1)
  18. Ist das eine Vergleichsfunktion für qsort? Wenn du ein Array mit qsort sortierst, wird die Vergleichsfunktion mit den Adressen jeweils zweier Arrayelemente aufgerufen. Wenn du also ein Array von char* hast, bekommt die Vergleichsfunkion char**. Da es in C keine andere Möglichkeit gibt, werden diese Adressen in dem "generischen" Typ void* übergeben. Hinter diesen void* stecken also eigentlich Zeiger auf Strings (char**). Die kannst du aber nicht mit strcmp vergleichen, deswegen musst du sie vorher einmal derefenzieren, und das macht der Stern ganz vorn.
  19. Klotzkopp

    Wortausgabe

    Dann solltest du zunächst einmal einen Datentyp wählen, der überhaupt ein Wort speichern kann. Momentan verwendest du char, da passt nur ein einzelnes Zeichen rein. Wörter kannst du in std::string speichern, dazu brauchst du #include <string>. Und bitte mach beim nächsten Mal keinen Screenshot im Word-Dokument. Das ist massive Platzverschwendung, problematisch für Leute, die kein Word haben, und verhindert, dass man den Code einfach kopiert, man muss ihn abschreiben. Kopier einfach den Code in den Beitrag, mit [ CODE]-Tags drumherum.
  20. Klotzkopp

    Dezimal zu dual

    Ich glaube, du bist da ein wenig durcheinandergekommen, ob in i nun die Zweierpotenzen oder nur die Exponenten stehen sollen. Du fängst bei sizeof(int) * 8 an (mutmaßlich 32) und teilst dann wiederholt durch 2. Damit bekommst du aber nur die letzten 6 Bits.
  21. Klotzkopp

    Dezimal zu dual

    Noch schlimmer: Du greifst auf ein char zu, das außerhalb des Arrays liegt. Wenn du ein Array mit 33 Elementen anlegst, dann ist der höchste erlaubte Index, mit dem du darauf zugreifen darfst, 32.
  22. Klotzkopp

    Dezimal zu dual

    Wenn du mit char arbeitest, musst du die Zeichen '0' und '1' ins Array schreiben, nicht die Zahlenwerte 0 und 1. Die Terminierung ist '\0'.
  23. Klotzkopp

    Dezimal zu dual

    Es gibt keinen Ausgabeoperator für int-Arrays. Entweder gibst du mit einer Schleife jedes Element einzeln aus, oder benutzt ein char-Array. Dann darfst du aber die Terminierung nicht vergessen. Und beim nächsten Mal bitte ein paar Details mehr zur Fehlermeldung. "Ein Fehler" hilft bei einem etwas komplexeren Problem schon nicht mehr weiter.
  24. Klotzkopp

    Endlosschleife

    Nein, break braucht man nicht unbedingt. Alle Schleifen haben zu diesem Zweck die eingebaute Bedingung, die steuert, wie lange die Schleife läuft. Die break-Anweisung benutzt man normalerweise nur, wenn ein unerwartetes Ereignis eintritt und die Schleife vorzeitig beendet werden soll. Letztlich ist das eine Stilfrage, aber notwendig ist break nicht.
  25. Klotzkopp

    Endlosschleife

    Erstens ist die Schleifenbedingung falsch. Deine Schleife läuft, solange die Differenz kleiner als 10 hoch -epsilon ist, sie sollte aber laufen, solange das nicht der Fall ist. Zweitens musst du fabs benutzen, nicht abs. abs gibt int zurück, und damit ist abs(yneu-yalt) je nach Wert von eingabe sofort 0.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...