1 Wert in 2 versch. Arrays

juan_

juan_

König
Hallo beisammen,

kann mir jemand sagen, wie ich mit möglichst wenig Aufwand eine Zahl in ein 2dim. Array (bestimmte Position) packe und ein boolsches Array an der Stelle[Zahl] auf true setze?

;)

Bsp:
Zahl 4 soll an Stelle [2][1] des Arrays und das Booleanarray soll an Position 4 auf true gesetzt werden.


Steh grad irgendwie ein bisschen aufm Schlauch :S

danke && ciao
 
öhm ...

Code:
zahl = 4;
foo[2][1] = zahl;
bar[zahl] = true

... oder stehe ich auch auf einem Schlauch?
 
jain, theoretisch hast du recht. ich hätte mich vielleicht ein wenig präziser ausdrücken sollen:

das Ganz wird in versch. Methoden weiterverarbeiten, und daher geht so deine "zentrale" Lösung nicht. Ich würde gerne am Anfang irgendwas definieren und es dann via Methode an die anderen Beiden weiterleiten. Ich will außerdem flexibel bleiben, an welchen Stellen die Zahl im 2dim. Array eingetragen wird.

ciao
 
Hm, ich kenne die Architektur deines Programmes nicht, aber lässt es sich eventuell mit einer statischen Klasse (soll als Ableger dienen) oder einer Member-Variable (aus der ganzen Klasse erreichbar) lösen?
 
keine Ahnung, haha ;)

Sorry, sagt mir absolut null, bin noch sehr weit am Anfang. Programm darf ich leider auch nicht posten, weil es ne Belegarbeit ist und ich nicht will, dass ich wegen sonem "Fehler" druchfalle.

vielleicht kann ich es ein bisschen erklären.

-math.random zieht eine zahl von 1-16
-methode überprüft ob die Zahl schon in matrix[][] steht, wenn nein: zahl reinschreiben und booleanarray bei zahl auf true sezten.


eigentlich ganz simpel. jetzt würde ich es gerne so einrichten, dass ich das Programm mit ein paar Initialwerten füttere, und ihm damit sagen, dass matrix[2][1] mit 4 bereits belegt ist und die 4 Pos. im Booleanarray auf true steht. diese zahl darf somit nicht wieder gezogen werden
 
Code:
//foo[x][y]
//bar[x*y]
int newRandom = Math.Random(16);

for(int i = 0; i < x; i++)
{
	for(int j = 0; j < y; j++)
	{
		if(foo[x][y] == newRandom) bar[x*y] = true;
	}
}
 
verdammt!

wieder unglücklich ausgedrückt. Alles steht, bis auf die Initialwerteintragung ;)


//edit: okay, lassen wirs. ist einfach zu dumm, ohne mit dem Programm zu arbeiten...

Danke dir für deine Mühen
 
Also, ich hab Zeit. Eventuell ist es auch meine Schuld.

Also, das was ich die gegeben habe passt, aber es fehlt eine "Initialwerteintragung"? - Meinst du damit, dass du dieses foo[x][y] mit Werten füllst, und bei jeder Eintragung wird der jeweilige Wert quasi durchgestrichen, sodass der Wert immer nur 1 mal vorkommt?
 
Ich glaube, dass wir beide ein wenig an einander vorbei arbeiten ;)

Das was du mir gegeben hast passt nicht, da ich das ganze Prozedere mit den Randomwerten in eigene Funktionen ausgelagert habe.

im Prinzip muss die Methode so aussehen, dass ich ihr einfach sagen, dass welche Initialwerte ich brauche. im Prinzip evtl. sowas:
initialisiere(array[2][1] = 4)
initialisiere(array[3][2] = 6)

die Initialisierenmethode sieht dann so aus, dass sie erstmal die beiden Werte (4,6) an die jeweiligen Positionen schreibt UND die Positionen 4 und 6 im boolschen Array auf true stellt.


Mit fällt aber dabei gerade das nächste Problem auf: wie kann ich den beiden Positionen im Array (2,1 und 3,2) sperren, sodass die Felder nicht bearbeitet werden können?!
 
Hi,

zwecks des "neuen Problems": prüfe, ob das Array an dieser Position bereits einen Wert enthält.

Wenn ich dich jetzt richtig verstanden habe:

Code:
private static int[,] foo = new int[4, 4];
private static bool[] bar = new bool[16];

static private bool initialisiere(int x, int y)
{
    int newRand = new Random().Next(16);
    if (foo[x, y] != -1 || bar[newRand])
    {
        // Array besitzt an dieser Position einen Wert
        // oder
        // Randomzahl wurde bereits genutzt

        return false;
    }
    else
    {
        foo[x, y] = newRand;
        bar[newRand] = true;

        return true;
    }
}

static private void erstmaligesFuellen()
{
    // alles auf -1 setzen um zu zeigen, dass es leer ist
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            foo[i, j] = -1;
        }
    }

    bool warNix = false;
    for (int x = 0; x < 4; x++)
    {
        for (int y = 0; y < 4; y++)
        {
            while (warNix == false)
            {
                warNix = initialisiere(x, y);
            }
            warNix = false;
        }
    }
}
 

Ähnliche Themen

sed? Zeichenkette ersetzen 1:2:17 zu 1:02:17

[PHP] Checkboxen-Auswahl + dazugehörige Werte in Array

bash: Fehlermeldung und Werte in Array sortieren?

C Programm unter Unix

Probs mit Perl script

Zurück
Oben