Obtener la entrada del usuario y crear matriz 2D

0

Pregunta

Quiero aprovechar la entrada de usuario y crear en 2D de la matriz de la forma en que el usuario introduce los valores en dos líneas. Primer usuario definir valores separados por espacios, a continuación, golpea a entrar y le da otros valores también se separan los espacios como se muestra a continuación en el ejemplo:

Dar valores:

2 3 4
5 6 7

variable debería tener esto al final:

[[2, 3, 4], [5, 6, 7]]

Otro ejemplo:

Dar valores:

1 2
3 4

variable debería tener esto al final:

[[1, 2], [3, 4]]
c#
2021-11-24 06:06:06
1

Mejor respuesta

2

Sinceramente, no sé por qué haría esto complicado, pero aquí vamos:

Console.Write("Please insert values separated by white-space: ");
string userInputLine1 = Console.ReadLine();
Console.Write("Please insert values seperated by white-space again: ");
string userInputLine2 = Console.ReadLine();

string[] userInputLine1Splitted = userInputLine1.Split(" ");
string[] userInputLine2Splitted = userInputLine2.Split(" ");

// Either this or catch an out-of-boundary exception when one is larger than the other and fill the space with 0's or something else.
if (userInputLine1Splitted.Length != userInputLine2Splitted.Length)
{
  throw new Exception("Both 1d arrays need to be the same length!");
}

int lengthOfArray = userInputLine1Splitted.Length;

// Since we  always have only 2 rows this can be hardcoded.
int[,] TwoDArrayFromUserInput = new int[2, lengthOfArray]; 

for (int col = 0; col < lengthOfArray; col++)
{
  TwoDArrayFromUserInput[0, col] = Convert.ToInt32(userInputLine1Splitted[col]);
  TwoDArrayFromUserInput[1, col] = Convert.ToInt32(userInputLine2Splitted[col]);
}

// Print to console to prove it worked.
for (int row = 0; row < 2; row++)
{
  for (int col = 0; col < lengthOfArray; col++)
  {
    Console.Write(TwoDArrayFromUserInput[row, col] + " ");
  }

  Console.WriteLine();
}

Si usted puede especificar su uso-caso estoy bastante seguro de que podría ayudar a llegar a una mejor solución.

2021-11-24 06:43:48

por qué u dijo que su complicada? La tarea consiste en tomar 2D moneda de diez centavos de la matriz de la consola. Qué hay de malo con eso?
Arie

Tal vez "complicado" era la palabra adecuada. Pero dependiendo del caso de uso, hay mucho mejores alternativas de uso de 2 1D matrices como una especie de tampón para crear una matriz 2D.
Axs

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................