C# AufgabeArray?
Folgende Fragestellung ist gegeben:
Schreiben Sie ein Programm Aufgabe9.cs, das eine Ganzzahl int dimension vom Benutzer erfragt. Danach soll ein zweidimensionales Array erstellt werden, das dimension*dimension int-Werte enthält.
Die Werte von dimension*dimension bis 1 sollen absteigend in ein Kallax Regal mit dimension Fächern horizontal und dimension Fächern vertikal einsortiert werden.
Zum Beispiel soll bei der Eingabe 3 das folgende zweidimensionale Array erstellt und ausgegeben werden:
9 8 7
6 5 4
3 2 1
Meine Lösung dazu:
Mein Problem besteht nun darin, dass das Programm nur bei einer Eingabe von "3" funktioniert. Bei allen anderen Zahlen enthält das Array dann Fehler.
Hier der Quellcode zu meiner Lösung:
using System;
using System.Runtime.InteropServices;
namespace Aufgabe9
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Geben Sie eine Zahl ein, bei der nach dem Schema Zahl*Zahl ein Array erstellet werden soll:");
string eingabe = Console.ReadLine();
int intEingabe = Convert.ToInt32(eingabe);
Console.WriteLine("\n");
int[,] eingabeArray = new int[intEingabe, intEingabe];
int eingabeArrayLänge = intEingabe * intEingabe;
int spalte = 0;
int summeDurchläufe = 0;
eingabeArray[0, 0] = intEingabe * intEingabe;
for(int j=0; j<intEingabe; j++)
{
for (int i = 0; i < intEingabe; i++)
{
eingabeArray[i, j] = eingabeArrayLänge - summeDurchläufe;
if (i >= 0)
{
summeDurchläufe = summeDurchläufe + 1;
}
}
}
Console.WriteLine(eingabeArray[0, 0] + "\n"+ eingabeArray[1, 0] + "\n" + eingabeArray[2, 0]+"\n");
Console.WriteLine(eingabeArray[0, 1]+"\n"+ eingabeArray[1, 1]+"\n"+ eingabeArray[2, 1] + "\n");
Console.WriteLine(eingabeArray[0, 2] + "\n" + eingabeArray[1, 2] + "\n" + eingabeArray[2, 2]);
}
}
}
1 Antwort
Hallo, du musst auch deine Ausgabe dynamisch anpassen.
using System;
using System.Runtime.InteropServices;
namespace Aufgabe9
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Geben Sie eine Zahl ein, bei der nach dem Schema Zahl*Zahl ein Array erstellet werden soll:");
string eingabe = Console.ReadLine();
int intEingabe = Convert.ToInt32(eingabe);
Console.WriteLine("\n");
int[,] eingabeArray = new int[intEingabe, intEingabe];
int eingabeArrayLänge = intEingabe * intEingabe;
int spalte = 0;
int summeDurchläufe = 0;
eingabeArray[0, 0] = intEingabe * intEingabe;
for (int j = 0; j < intEingabe; j++)
{
for (int i = 0; i < intEingabe; i++)
{
eingabeArray[i, j] = eingabeArrayLänge - summeDurchläufe;
if (i >= 0)
{
summeDurchläufe = summeDurchläufe + 1;
}
}
}
Console.WriteLine();
for (int j = 0; j < intEingabe; j++)
{
for(int i = 0; i < intEingabe; i++)
{
Console.Write(eingabeArray[i, j] + " ");
}
Console.WriteLine();
}
Console.Read();
}
}
}
Hallo, du hattest immer eine angepasste Ausgabe von 3x3 Elementen, deswegen dachtest du, du hättest was falsch gemacht. Du musst natürlich dynamisch sein, egal ob 1x1, 2x2 oder 100x100 Elemente.
Deswegen die beiden for-Schleifen, die durch dein "intEingabe" durchlaufen.
Wenn dir die Antwort übringens geholfen hat, bitte ich dich um ein "Danke" /& "Hilfreich" und die "Hilfreichste Antwort" :-D
Hallo, danke für die Lösung!
Wie ist das zu verstehen - dynamisch anpassen ?
Wieso genau kommt da was anderes raus, als wenn man die einzeln ausgibt (so wie ich es gemacht habe)? Im Grunde müssen doch zum Zeitpunkt der Ausgabe schon alle Elemente feststehen - wieso verändert die Form der Ausgabe denn die Werte??