Position im zweidimensionalen Array

uninteressant

Newbie
Registriert
Juni 2018
Beiträge
2
Hi ich bin neu in C#, zurzeit habe ich folgendes Problem:

Ich soll ein Programm schreiben, bei dem 2D-Array zufällig befüllt wird - bis dahin kein Problem,
aber dann soll ich die Position der größten Zahl herausfinden und als string zurückgeben

mein Code:

static void Big(int[,] ar)
{
int biggest = -1000;
string pos;

for (int x = 0; x < ar.GetLength(0); x++)
{
for (int y = 0; y < ar.GetLength(1); y++)
{
if (biggest < ar[x, y])
{
biggest = ar[x, y];
pos = x + "/" + y;

Console.Clear();
Console.WriteLine(pos);
}
else
biggest = biggest;
}
}
}


Das Problem ist, dass ich nicht weiß, wie ich die Variablen x und y außerhalb von den for-Schleifen verwenden kann.
Ich deklariere die Variable pos ja schon in der Schleife, aber wenn ich sie zurückgeben möchte Meldet Visual Studio, dass sie nicht deklariert wurde und daher nicht verwendet werden kann. Hoffe ihr könnt mir helfen, danke.
 
Deklariere die Variablen x und y einfach bereits vor der FOR-Schleife als INT. Dann ist sie global verfügbar und nicht nur lokal in der Schleife.
 
  • Gefällt mir
Reaktionen: uninteressant, GTrash81 und Scholle1309
Nicht das was @Sun-Devil schreibt, was zur Hölle.

Gib die Position doch zurück, du hast sie doch da gefunden in der Methode. Ändere den Rückgabetyp entsprechend, gib sie zurück und weise sie beim Aufruf der Methode einer anderen Variable zu oder gib das Ergebnis direkt aus.
 
  • Gefällt mir
Reaktionen: uninteressant und Nilson
Hier mal dein Code in lesbarer Form (ohne den überflüssigen else Block):
C#:
static void Big(int[,] ar)
{
    int biggest = -1000;
    string pos;
    for (int x = 0; x < ar.GetLength(0); x++)
    {
        for (int y = 0; y < ar.GetLength(1); y++)
        {
            if (biggest < ar[x, y])
            {
                biggest = ar[x, y];
                pos = x + "/" + y;
                Console.Clear();
                Console.WriteLine(pos);
            }
        }
    }  
}
uninteressant schrieb:
Das Problem ist, dass ich nicht weiß, wie ich die Variablen x und y außerhalb von den for-Schleifen verwenden kann.
Zum Beispiel so:
C#:
static void Big(int[,] ar)
{
    int biggest = -1000;
    int x = 0;
    int y = 0;
    for (int i = 0; i < ar.GetLength(0); i++)
    {
        for (int j = 0; j < ar.GetLength(1); j++)
        {
            if (biggest < ar[i, j])
            {
                biggest = ar[i, j];
                x = i;
                y = j;
            }
        }
    }
    Console.Clear();
    Console.WriteLine(x + "/" + y);
}
 
Zuletzt bearbeitet: (Syntax-Highlighting)
  • Gefällt mir
Reaktionen: uninteressant
Danke, das Programm funktioniert jetzt.
Außerdem weiß ich jetzt auch, dass ich mich auf die Leute in diesem Forum verlassen kann.
Hoffe das bleibt auch so.
 
uninteressant schrieb:
Danke, das Programm funktioniert jetzt.
Außerdem weiß ich jetzt auch, dass ich mich auf die Leute in diesem Forum verlassen kann.
Hoffe das bleibt auch so.

Ja klar kein Problem, immer her mit den Hausaufgaben! :D
 
Eine Änderung würde ich noch vorschlagen. Am Anfang definiert ihr int biggest = -1000; als größte Zahl. Damit geht ihr davon aus, dass in dem Array nur Zahlen drinstehen, die größer als -1.000 sind. Das muss aber nicht immer der Fall sein, da sich int ja auf einen signed 32-Bit Integer bezieht und somit einen Wertebereich von -2.147.483.648 bis 2.147.483.647 hat.

Also wäre es sinnvoller, biggest auf einen Wert aus dem Array zu setzen.
C#:
int biggest = ar[0,0];
 
  • Gefällt mir
Reaktionen: 0-8-15 User
Ich würde der Variable dann noch einen anderen Namen geben. Zum Beispiel:
C#:
int maximum = ar[0,0];
 
Zurück
Oben