kleine matrix in c# bauen?

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.


d0ber 
Fragesteller
 19.07.2022, 14:37

Wie platziere ich folgendes:

  1. 3 mal alles nach unten aus
  2. 3 mal alles in einer zeile und am ende versuchst du das zu verbinden

So sollte es am ende rauskommen

01230

01231

01232

01233

0
d0ber 
Fragesteller
 19.07.2022, 14:43
@d0ber

Ich habe das hier.

wie fühle ich einen leeren Raum mit Zahlen auf??

for (int i = 0; i < 4; i++)
{
	Console.Write(i);
}
	
for (int i = 0; i < 4; i++)
{
	Console.WriteLine(i);
}	


0
GuteAntwort2021  19.07.2022, 15:20
@d0ber

Wie sieht denn das Array aus? Also, wie viele Reihen und Spalten hat es?

0
GuteAntwort2021  19.07.2022, 15:55
@d0ber

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.

0
d0ber 
Fragesteller
 19.07.2022, 16:02
@GuteAntwort2021

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

0
GuteAntwort2021  19.07.2022, 16:13
@d0ber

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

0
d0ber 
Fragesteller
 19.07.2022, 17:12
@GuteAntwort2021

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

0
GuteAntwort2021  19.07.2022, 17:22
@d0ber

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());
1
d0ber 
Fragesteller
 20.07.2022, 09:47
@GuteAntwort2021

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);
}
0