kleine matrix in c# bauen?
hallo zusammen. habe eine aufgabe wo ich einfach nicht weiterkomme.
ich soll eine kleine matrix bauen
123
231
321
die breite und länge bestimmt der nutzer
1 Antwort
Die einfachste Variante dürfte vermutlich ein Mehrdimensionales Array sein.
using System;
public class Programm
{
public static void Main()
{
Console.WriteLine("Anzahl Reihen: ");
var rows = Int32.Parse(Console.ReadLine());
Console.WriteLine("Anzahl Spalten: ");
var cols = Int32.Parse(Console.ReadLine());
int[,] arr2D = new int[rows,cols];
Console.WriteLine(arr2D.Length);
}
}
Wenn du z. B. für Reihen 3 und für Spalten 5 eingibst, sollte für die Länge 3*5=15 ausgegeben werden. Die entsprechenden Tupel erreichst du ebenfalls recht bequem:
arr2D[1,3] = 32;
Console.WriteLine("\n"+arr2D[1,3]);
Damit würdest du in der zweiten Reihe der 4. Spalte den Wert 32 zuweisen und anschließend in der Console ausgeben.
Ja, in den meisten Programmiersprachen beginnen die Indizes für Arrays, Listen, etc. bei 0 und nicht bei 1. Also [1,3] steht bildlich gesprochen für 2. Reihe, 4. Spalte.
Wie sieht denn das Array aus? Also, wie viele Reihen und Spalten hat es?
Wenn es einfach eine 4x5 Matrix ist, dann sähe das vermutlich so aus:
for (var i=0; i<rows; i++)
{
for(var j=0; j<cols; j++)
{
Console.Write(arr2D[i,j].ToString());
}
Console.WriteLine("");
}
Wenn die Matrix anders aussieht, also so, dass für die Zeichen 2 verschiedene Spalten herangezogen werden müssen, dann müssen wir das anders realisieren.
so komplex ist die aufgabe nicht also ich brauche kein array. sondern ich habe ein userinput mit breite und länge von 0 bis 4. und mit hilfe 2 for schleifen soll es dann
so was hier rauskommen
01230
01231
01232
01233
so ein art von tabelle
hier ist mein Code was ich bis jetzt geschaft habe
Console.WriteLine("Bitte geben Sie die Breite ein?:");
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Bitte geben Sie die Länge ein?:");
int number1 = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < 4; i++){
Console.WriteLine(i);
for (int a = 0; a < 4; a++)
{
Console.Write(a);
}
bekomme aber folgendes in der console raus
Bitte geben Sie die Breite ein?:
Bitte geben Sie die Länge ein?:
0
012341
012342
012343
01234
Wo liegt mein Fehler
Dein Fehler liegt an den statischen Schleifenlängen.
... i < 4 ...
... a < 4 ....
berücksichtigt ja nicht die Nutzereingabe, sondern gibt fest vor, dass die Matrix 4 breit und 4 lang ist.
Dazu noch
Console.WriteLine(i);
macht irgendwie wenig Sinn.
Also stattdessen einfach:
Console.WriteLine("Bitte geben Sie die Breite ein:");
var rows = Int32.Parse(Console.ReadLine());
Console.WriteLine("Bitte geben Sie die Länge ein:");
var cols = Int32.Parse(Console.ReadLine());
for (var i=0; i<rows; i++)
{
for(var j=0; j<cols; j++)
{
Console.Write(j.ToString());
}
Console.WriteLine("");
}
Bei 4x4 ergibt das dann 4 mal 0123
aber wie kriege ich den ersten 0 weg in der erste zeihle?
0
012341
012342
012343
01234
und wie bekomme ich den letzten zahl in der letzte zeihle
Oh man, streng doch dein eigenes Köpfchen mal ein bisschen an! Wieso erscheint in der ersten Zeile eine 0 und springt dann in die nächste Zeile über und wieso steht hinten noch eine 1, 2, 3 usw.?
Wegen
Console.WriteLine(i);
vor der zweiten Schleife. Wenn das i aber erst danach ausgegeben werden soll, solltest du die Zeile wohin packen? Genau, nach der zweiten Schleife!
Console.WriteLine("Bitte geben Sie die Breite ein:");
var rows = Int32.Parse(Console.ReadLine());
Console.WriteLine("Bitte geben Sie die Länge ein:");
var cols = Int32.Parse(Console.ReadLine());
for (var i=0; i<rows; i++)
{
for(var j=0; j<cols; j++)
{
Console.Write(j.ToString());
}
Console.WriteLine(i.ToString());
}
Und wenn die letzte Zahl hinten mit einer 1 und keiner 0 beginnen soll , dann eben
Console.WriteLine((i+1).ToString());
Danke für deine Hilfe.
Console.WriteLine("Bitte geben Sie die Breite ein?:");
int width = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Bitte geben Sie die Länge ein?:");
int length = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < length; i++)
{
for (int a = 0; a < width; a++)
{
Console.Write(a);
}
Console.WriteLine(i);
}
Wie platziere ich folgendes:
So sollte es am ende rauskommen
01230
01231
01232
01233