zweidimensionales Array
-
Die Aufgabe ist eigentlich nicht schwierig. In c könnte ich das ohne Probleme implementieren. Würde aber gerne wissen, was hier das Problem ist.
Danke
-
Kann mir hier niemand einen tipp geben?
ich brauche nur einen wert aus dem initialisierten array, mit dem ich weiterrechnen kann.
da ich etwa 100000 mal irgendeinen spin wechseln muss, wäre es toll, wenn ich nicht jedes mal über alle werte im array laufen müsste.ich stehe da ziemlich auf der leitung...
danke
-
hat sich erledigt, danke...
im konstruktoraufruf lag der fehler!
-
nijntje schrieb:
srand(2); //get random number
Der Kommentar widerspricht dem Code davor.
Ein paar Tipps:
std::vector
für Arrays
- vernünftige Namen für Variablen und Konstanten
- der Standardkonstruktor erzeugt kein gültiges Objekt (->vector
)
- geschweifte Klammern bei allen Blöcken
-
TyRoXx schrieb:
- geschweifte Klammern bei allen Blöcken
Deine Sig ist übrigens auch Schwachsinn.
-
314159265358979 schrieb:
In der äussersten Ebene gebe ich dir recht, aber bei inneren Verschachtelungsebenen, bei denen die äusseren Klammern benutzen, finde ich nicht schlecht. Auch wenn der else-Zweig Klammern hat, sollte der if-Zweig auch welche haben. Wohin die Nichtbeachtung dieser Regel führt, sehen wir ja hier:nijntje schrieb:
for (int j = 0; j < L; j++) { if (T == 0) site[i][j] = up; //if temperature is 0 } else { // ...
Wenn hier schon alles kritisiert wird, dann darf das folgende nicht unerwähnt bleiben:
- Vergleich a == 0 in !a umändern
- ++j statt j++
- Keine Variablen/Konstanten in lauter Grossbuchstaben
- Konstantendefinitionen (bei dir) nicht auf globaler Ebene, sondern auf Klassenebene
- Parameternamen im Header nicht weglassen
-
nittpicker schrieb:
Wohin die Nichtbeachtung dieser Regel führt, sehen wir ja hier: [...]
Ich kann mich nicht erinnern, jemals dieses Problem gehabt zu haben. Ich kann mich auch noch nicht erinnern, jemals Range-Checks bei Arrays gebraucht zu haben, oder Probleme durch implizite Konvertierungen gehabt zu haben. Oder durch überladene Operatoren.
Worauf ich hinaus will damit? Lustigerweise habe ich nie die Probleme, die immer irgendwo kritisiert werden. Entweder, ich bin einfach der Oberprofi, oder alle anderen sind doof. Suchs dir aus.
nittpicker schrieb:
- Vergleich a == 0 in !a umändern
Ney, das ist absolut okay.
nittpicker schrieb:
- Konstantendefinitionen (bei dir) nicht auf globaler Ebene, sondern auf Klassenebene
Das sind bei ihm doch nicht mal Konstanten. Die Variablen sind einfach komplett unnötig.
-
nittpicker schrieb:
- Vergleich a == 0 in !a umändern
Das mag hustbaer nicht, und den finde ich cool (hab es früher auch immer gemacht)
-
314159265358979 schrieb:
Worauf ich hinaus will damit? Lustigerweise habe ich nie die Probleme, die immer irgendwo kritisiert werden. Entweder, ich bin einfach der Oberprofi, oder alle anderen sind doof. Suchs dir aus.
Du bist zu gut für dieses Forum, geh weg.
Such dir andere Aufgaben, zum Beispiel deinen Grundschulabschluss machen.
-
Netter Versuch.
Finds voll süß, dass ich nun in deiner Sig bin. Dazu fällt mir folgendes Zitat ein:Du hast es geschafft. Du bist zur Identifikationsfigur des Bösens etc. aufgestiegen. Jetzt gehörst du zu einer Reihe von großartigen Leute wie ..., ... und meiner Wenigkeit.
-
Wie niedlich TyRoXx versucht, PI zu dissen
-
314159265358979 schrieb:
Netter Versuch.
Finds voll süß, dass ich nun in deiner Sig bin. Dazu fällt mir folgendes Zitat ein:Du hast es geschafft. Du bist zur Identifikationsfigur des Bösens etc. aufgestiegen. Jetzt gehörst du zu einer Reihe von großartigen Leute wie ..., ... und meiner Wenigkeit.
Hacker schrieb:
Wie niedlich TyRoXx versucht, PI zu dissen
Mitläufer
-
TyRoXx schrieb:
314159265358979 schrieb:
Netter Versuch.
Finds voll süß, dass ich nun in deiner Sig bin. Dazu fällt mir folgendes Zitat ein:Du hast es geschafft. Du bist zur Identifikationsfigur des Bösens etc. aufgestiegen. Jetzt gehörst du zu einer Reihe von großartigen Leute wie ..., ... und meiner Wenigkeit.
Hacker schrieb:
Wie niedlich TyRoXx versucht, PI zu dissen
Mitläufer
Nein, es war nur niedlich, wie du versuchst mit einem so lächerlichen Spruch Aufmerksamkeit zu erregen (naja, erregen würdest du wahrscheinlich sowieso nichts).
Edit: Haha, ist einfach zu komisch das du es in deine Signatur schreibst. Wieviel unnötiger wirste denn noch?
-
Hacker schrieb:
Nein, es war nur niedlich, wie du versuchst mit einem so lächerlichen Spruch Aufmerksamkeit zu erregen (naja, erregen würdest du wahrscheinlich sowieso nichts).
Edit: Haha, ist einfach zu komisch das du es in deine Signatur schreibst. Wieviel unnötiger wirste denn noch?
Hat doch funktioniert, und dir fällt auch nichts besseres ein.
Die Signatur hat er sich verdient, nicht nur heute.
-
TyRoXx schrieb:
Die Signatur hat er sich verdient, nicht nur heute.
Deine Signatur bestätigt eigentlich nur: Neid ist, wenn man Niveau von unten betrachtet.
-
Da habe ich ja eine Diskussion verursacht...
Hilft mir jedoch gar nichts. ich bin physiker und nicht informatiker. das ist mein erster versuch in oop (könnte ich eventuell jemanden den Code schicken, der mir den code verbessert mit konkrete Kritiken und Begründung?)
Noch eine andere Frage zum zweidimensionalen array:
ich sollte aus einem array 100X100 jeden spin einmal zufällig betrachten. dabei soll jeder spin nur einmal gewählt werden.
wie mache ich das?
meine idee wäre die stellen zu nummerieren von 1 bis 10000 und dann wie bei den lottozahlen kontrollieren, ob eine doppelte zahl entdeckt wurde.#include <iostream>
#include <stdlib.h>
using namespace std;int main() { int lotto[6]; int i, j; bool neueZahl; srand(0); for(i=0; i<6; i++) // ziehe nacheinander sechs Zahlen { do // wiederhole die Ziehung, bis die neue Zahl { // nicht mit einer der vorigen identisch ist. lotto[i] = rand() % 49 + 1; neueZahl = true; // positive Grundeinstellung for (j=0; j<i; j++) { // durchlaufe alle bisher gezogenen Kugeln if (lotto[j]==lotto[i]) { // Hier wurde ein Doppelter entdeckt neueZahl = false; } } } while (!neueZahl); } for (i=0; i<6; i++) { cout << lotto[i] << " "; } cout << endl; }
(aus willemer, einstieg in c++)
gibt es da eine andere methode?
danke
nijntje
-
Der naechste Thread, der von den Kiddies Pi und Hacker zerstoert wurde.
-
das heisst??
soll ich einen neuen thread öffnen oder mich nach einem anderen forum umsehen???
oder kannst du mir da helfen...
-
nijntje schrieb:
soll ich einen neuen thread öffnen oder mich nach einem anderen forum umsehen???
Einfach Pi, Hacker und alle Diskussionen um sie ignorieren.
Zu deinem Problem: Da du jedes Element genau einmal betrachten möchtest, suchst du eigentlich eine zufällige Permutation. Dafür gibts std::random_shuffle aus
<algorithm>
.
-
nijntje schrieb:
das heisst??
Dass du dich nicht von irgendwelchen Trollen verunsichern lassen solltest.
Also: Kommt die zufällige Betrachtung von Werten in einem Array, die läuft bis alle Werte betrachtet wurden und keinen Wert doppelt betrachtet, nicht einer zufälligen Reihenfolge gleich?
int main() { std::vector<Spin> spins; // Füllen std::random_shuffle(spins.begin(), spins.end()); // Alles durchgehen }
http://www.cplusplus.com/reference/stl/vector/
http://www.cplusplus.com/reference/algorithm/random_shuffle/