Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Was kannst Du denn auswählen? Der Name des lokalen Rechners sollte auf jeden Fall drinstehen. Was das Umgehen angeht, die Anmeldung ist dazu da, nicht umgangen werden zu können. Frag jemanden, der das Admin-Passwort hat, und beachte die Boardregeln.
  2. Hast Du auf dem Anmelde-Dialog mal auf den Optionen-Button geklickt? Da kannst Du einstellen, wo Du dich anmeldest. Wenn Du da den Rechnernamen auswählst, kannst Du Dich lokal anmelden.
  3. Nein, weil Speicher byteweise adressiert wird, nicht jedes Bit einzeln.
  4. Nein, so wird das nicht gehen. Es ist genau wie bei der Matrix: Was Du machen musst, hängt davon ab, in welcher Dimension Du erweitern willst. In der ersten Dimension (ich sage jetzt mal I), musst Du Deinem Vektor von zweidimensionalen Matrizen eine weitere hinzufügen, bei J musst Du jeder Matrix-"Scheibe" einen weiteren Vektor hinzufügen, und bei K musst Du jedem Vektor in jeder Matrix ein neues Element hinzufügen.
  5. Hast Du einen Compiler? Wenn ja, welchen? Wenn nicht: Ohne geht's nicht
  6. Wenn Du MFC benutzt, kannst Du im Konstruktor Deiner Dialogklasse m_bFullScreen auf FALSE setzen.
  7. Ist X zufällig ungefähr 1.41? Was ist mit dmPaperSize?
  8. Warum das Rad neu erfinden: http://www.codeproject.com/miscctrl/hyperlink.asp
  9. @Crush und nic_power: Bleibt bitte beim Thema. Oder macht im Sonstige-Forum einen neuen Thread auf, so was wie "Die bizarre Schönheit der Assemblersprache im Wandel der Architekturen" @blast: Unsere beiden Assembler-Freaks haben jetzt zwar technisch bis ins kleinste erklärt, was bitweises Schieben ist, aber ein Aspekt ist bisher IMO zu kurz gekommen: Was das ganze soll. Bitweises Schieben bedeutet, bei einer Zahl im Dualsystem alle Stellen nach links oder rechts zu verschieben. Das ändert den Wert immer um den Faktor zwei bzw. 1/2 (je nach Schieberichtung). 10 << 1 ergibt 20 10 >> 1 ergibt 5 10 << 2 ergibt 40 10 >> 2 ergibt 2 Im letzten Fall zeigt sich die Besonderheit, dass Bits, die aus dem Wertebereich der Zahl "herausgeschoben" werden, verloren sind. Das gilt auch für das obere Ende. Man könnte also auch einfach *2 bzw /2 (oder 4, 8, usw.) schreiben. Ein Beispiel, bei dem Schieben sinnvoller ist als Multiplizieren: unsigned long l = 123456; for( int b = 0; b <= 31; b++ ) { if( l & ( 1 << b ) ) { printf( "Bit %d ist gesetzt\n", b ); } } [/CODE] Wenn man nicht mit Schieben arbeitet, wird das Ausrechnen der Zweierpotenz schwieriger, weil man in einer Schleife multiplizieren muss: [CODE] unsigned long l = 123456; for( int b = 0; b <= 31; b++ ) { unsigned long zweierpotenz = 1; for( int i = 0; i < b; i++ ) { zweierpotenz *= 2; } if( l & zweierpotenz ) { printf( "Bit %d ist gesetzt\n", b ); } } Alternativ könnte man auch eine Potenzfunktion aus einer mathematischen Bibliothek einbinden. Das wäre aber unter der Haube auch nicht besser als die Multiplikationsschleife.
  10. Nimm nicht den logischen Und-Operator (&&), sondern den bitweisen (&), dann sollte es gehen.
  11. Wininet.h / Wininet.lib
  12. @Crush: Deine Variante unterscheidet sich zumindest so weit, dass bei Dir diese wiederholte Prüfung, ob ein Feld schon besetzt ist, nicht nötig ist. Dafür hast Du eine c%n-Prüfung drin.
  13. Welche Farbe hast Du denn beim Anlegen der ImageList als Maske angegeben?
  14. Hast Du mal versucht, mit CImageList::SetBkColor die Hintergrundfarbe der Imagelist auf CLR_NONE zu ändern?
  15. // Bestimmung der anderen Felder while( true ) { // Regel 1 feld[i][k]=x; if( x == n*n ) { // fertig break; } // Regel 2 i++; k++; bool feldgefunden = false; while( !feldgefunden ) { // regel 4 if( i >= n ) i = 0; if( i < 0 ) i = n-1; if( k >= n ) k = 0; if( k < 0 ) k = n-1; // regel 3 if( feld[i][k] != 0 ) { i++; k--; } else { feldgefunden = true; } } x++; }; [/CODE]
  16. Wie hast Du statement deklariert bzw. erzeugt?
  17. Ich kann nur wiederholen, was ich schon in meinem ersten Beitrag dieses Thread gesagt habe: Sag uns, was für einen Algorithmus Du verwendest! Offensichtlich gibt es mehr als einen Algorithmus, um ein magisches Quadrat zu erzeugen, denn der, den Du verwendest, unterscheidet sich von dem, den Crush weiter oben implementiert hat. Wie sollen wir Dir helfen, die "Regeln" für Deinen Algorithmus in C umzusetzen, wenn Du uns nicht sagst, wie die Regeln im Klartext lauten?
  18. Das Programm lässt sich bei mir compilieren - bis auf eine Warnung, dass der a zugewiesene Wert nicht verwendet wird. Überprüf noch mal die CFG-Dateien.
  19. Indem Du den Funktionszeiger übergibst.
  20. Es gibt keine spezielle Syntax für den Aufruf von Template-Funktionen. Ruf sie einfach auf wie eine normale Funktion. Die Funktion übergibst Du doch offenbar als Parameter. Kannst Du ein wenig verständlicher formulieren, wo das Problem liegt?
  21. Ich habe mir Deinen Code mal genauer angesehen: // Deklaration Spielfeld int feld[n][n];[/CODE] Das dürfte kein Compiler mitmachen. Wenn Du vorher nicht weißt, wie groß das Quadrat wird, dann musst Du den Speicher dynamisch holen. Alternativ kannst Du, wie in Crushs Beispiel, einen Maximalwert vorgeben. [CODE]// Bestimmung des Feldes der Zahl 1 feld [(n/2)+1][n/2] = (x + 1); Du rechnest zwar (auf Basis eines mir unbekannten Algorithmus) aus, wo die 1 hingehört, aber nachdem Du den Wert zugewiesen hast (was Du eigentlich in der Schleife danach machen solltest), wirfst Du die errechneten Koordinaten sozusagen weg. Besser: i = 1; k = n/2; // Bestimmung der anderen Felder (geändert von Klotzkopp) for (int c = 1; c <= n*n; c++) { feld[i][k]=c; if (c%n==0) { i++; } else { if( i == 1 ) { i = n; } else { i--; } if( k == n ) { k = 1; } else { k++; } } } [/code] Hast Du versucht, Crushs Fragenzeichen-Doppelpunkt-Konstrukt aufzulösen? Das müsste dann eigentlich so aussehen. Auf keinen Fall darfst Du in der Schleife n ändern. [CODE]// Ausgabe der Felder for(i = 0; i != n; i++) { for(k = 0; k != n; k++) { cout << feld [i][k]; } cout << "\n"; } Du weist die Werte des magischen Quadrats mit einem 1-basierten Index zu, gibst sie hier aber mit 0-basiertem Index aus. Wird nicht funktionieren. Außerdem solltest Du setw verwenden, sonst stehen alle Zahlen direkt hintereinander.
  22. Kann sein, dass Du eine Textdatei nehmen musst, die mehr als eine Seite Text enthält. Hast Du mal ein anderes Druckerkabel ausprobiert?
  23. Halt mal die Luft an, tracer! Ich sehe in Deiner Frage nirgends den Hinweis, dass es kein SSH-Client sein darf.
  24. Wieder was gelernt
  25. Klotzkopp

    Rucksackproblem

    @DocJunior: Hast Du nicht mitbekommen, dass Nova eine Template-Klasse benutzt? Und was soll "release" sein? @Nova: Solange Du tableau als Zeiger deklarierst, musst Du (*tableau)[][] schreiben. Ich hoffe, Du hast Speicher für die Matrix geholt. Du kannst die Matrix nicht erweitern, indem Du einzelne Elemente hinzufügst. Du kannst nur um ganze Spalten oder Zeilen erweitern. Um eine Spalte hinzuzufügen, musst Du mat einen weiteren Zeilenvektor hinzufügen, für einen neue Spalte musst Du jedem Zeilenvektor ein neues Element hinzufügen.

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...