Randomisiertes mehrdimensionales Array



  • Mir auch.

    Du musst noch stdlib.h einbinden. Darin sind u.a. rand und [c]srand deklariert.



  • C-32-Programm schrieb:

    Danke DirkB, ich verstehe jetzt, wie das zu lösen ist, mir ist nur ein wenig schleierhaft, warum dachschaden eine solchen"Aufstand" gemacht hat ?! 😞 😕

    Ich halb halt 'ne Zwangsneurose. 😉
    Und wenn man jemanden direkt erklärt, wie man bestimmte Fehler nicht macht, eignet man sich das auch gar nicht erst an.



  • Ich habs mir schon fast gedacht, dass der besagte Autor etwas mit den "netten" Programmierbüchern zu tun hat. Aber wie kann es denn bitte sein, dass ein Autor ein Buch veröffentlichen kann, in welchem so viele Fehler sind ?

    Ansonsten habe och keine weiteren fragen mehr, danke an dachschaden und DirkB, immer zur stelle bei Fragen danke 😉



  • Freie Wirtschaft. Wer kann, der kann. Und wenn er auch nur vorgeben kann, etwas zu können.
    Sollte mir aber eigentlich (vernünftigerweise) nichts ausmachen. Ich bestreite meinen Lebensunterhalt damit, die Fehler von anderen rauszusuchen und zu korrigieren. Unter anderem. 😃



  • Sooo ein klein wenig gebastelt und nun funktioniert es wunderbar !

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h> 
    
    int main() {
    	srand(time(0));
    	// [Y][X]
    	// Inhalt {0} ist Null
    	int i, j;
    	int tabelle[10][10] = { rand() };
    	// Schleife fuer Zeilen, Y-Achse
    	for (i = 0; i<10; i++) {
    		// Schleife fuer Spalten, X-Achse
    		for (j = 0; j<10; j++) {
    			tabelle[i][j] = rand();
    			printf("%6d ", tabelle[i][j]);
    		}
    		printf("\n");
    	}
    	printf("\n");
    	system("PAUSE");
    	return 0;
    }
    

    int tabelle[10][10] = { rand() }; funktioniert
    int tabelle[10][10] = { 0 }; funktioniert auch, warum ?

    Dann würde mich noch interessieren, wie kann man diese Werte denn jetzt Ordnen und darüber hinaus wie kann ich 0 1 2 3 4 5 6 7 8 9 über das Array schreiben, dass die zufälligen Elemente unter den Zahlen 0 1 2... stehen ?



  • C-32-Programm schrieb:

    int tabelle[10][10] = { rand() }; funktioniert
    int tabelle[10][10] = { 0 }; funktioniert auch, warum ?

    Das ist in beiden Fällen eien Definition mit gleichzeitiger Initialisierung.
    Dabei wird den Elementen, die nicht durch Werte auf der rechten Seite besetzt werden, 0 zugewiesen.
    Es bekommt also nur das Element tabelle[0][0] den Wert von rand() Der Rest ist 0.

    C-32-Programm schrieb:

    Dann würde mich noch interessieren, wie kann man diese Werte denn jetzt Ordnen und darüber hinaus wie kann ich 0 1 2 3 4 5 6 7 8 9 über das Array schreiben, dass die zufälligen Elemente unter den Zahlen 0 1 2... stehen ?

    Eine Schleife vor der Ausgabe, die von 0 bis 9 läuft und dann die Schleifenvariable (im gleichen Format wie die Tabelle) ausgibt.

    Wenn du statt i und j gleich x und y nimmst, sparst du dir auch den Kommentar. 😃



  • Genau hat auch funktioniert, gibt es eigentlich eine Möglichkeit diese randomisierten Zahlen jeweils unter die 0 1 2 3 .... geordnet zu setzen, soll heißen: Es gibt ja eine Wahrscheinlichkeitshäufung von bestimmten Werten also der letzten Zahl, die mit 0,1,2,3... enden. Kann man diese geordnet unter die 0 1 2 ... Zeile setzen ?



  • Häufigkeit berechnen und in einem Array sortiert ablegen.

    Dafür gibt es keine fertige Funktion.



  • Hallo, ich habe das ganze mal umgeschrieben in ein normales eindimensionales Array, kann mir jemand erklären, wie ich da die Werte auflisten kann, also sortiert ? das Array ist immer noch randomisiert, könnte man da einen Mergesort drüber laufen lassen ? Oder geht das einfacher ?

    Dann würde mich noch interessieren:
    int tabelle[100] = { 0 };
    int tabelle[10] = { 0 };
    int tabelle[100] = { 0 };

    warum macht es keinen unterschied wie groß das Array ist, ich meine ich habe 10x10 ergibt 100 aber warum wird mir mein Array auch angezeigt, wenn es unter [100] groß ist ?
    Danke



  • C-32-Programm 2 schrieb:

    warum macht es keinen unterschied wie groß das Array ist, ich meine ich habe 10x10 ergibt 100 aber warum wird mir mein Array auch angezeigt, wenn es unter [100] groß ist ?

    Weil in C die Arraygrenzen nicht überprüft werden. Du greifst da halt auf irgendeinen Speicher (evtl. von anderen Variablen) zu.


Anmelden zum Antworten