es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir una fila de números de cadena a enteros.

Tengo un archivo de texto con múltiples filas, en la primera fila el primer número N indica cuántas filas habrá después de la tercera, y el segundo número M es la cantidad de columnas que habrá. La segunda fila contiene M números. La tercera fila es igual a la segunda pero con un número más bajo.
El ejemplo se ve así:


6 8
9 9 9 9 9 9 9 9
5 5 5 5 5 5 5 5
8 4 6 6 6 6 6 6
7 5 7 6 6 6 6 5
6 6 6 5 5 5 5 6
8 6 8 7 7 7 7 6
8 6 6 6 6 6 6 6
8 6 6 6 6 6 6 1

Entonces, N es 6 lo que significa que hay seis filas más después de la tercera, M es 8, por lo que hay 8 columnas.
Ya he separado la primera fila y las he asignado a variables, y obtuve que el valor de la primera es 9 y el de la segunda es 5. Ahora tengo que separar las filas restantes en el mismo array, para que queden así: “8” “4” “6” “6” “6” “6” “6” “6” “7” “5” “7” “6” etc…
Intenté poner las filas en un array y luego separarlas en otro con un ciclo for, pero no parece funcionar.
Hasta ahora tengo esto:


static void Main(string[] args)
{
string[] frow = Console.ReadLine().Split(' ');
int dn = int.Parse(frow[0]);
int an = int.Parse(frow[1]);
string[] rows = new string[an];
int[] points = new int[an * dn];
string[] mxp = Console.ReadLine().Split(' ');
string[] mnp = Console.ReadLine().Split(' ');
int maxp = int.Parse(mxp[0]);
int minp = int.Parse(mnp[0]);
for (int i = 0; i < dn; i++)
{
rows[i] = Console.ReadLine();
points[i] = rows[i].Split(' ');
}
}

Cualquier ayuda es apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para dividir las filas restantes en un array, puedes utilizar un bucle for anidado para iterar sobre cada fila y dividirlas en números individuales.

    Aquí está el código actualizado:

    static void Main(string[] args)
    {
        string[] frow = Console.ReadLine().Split(' ');
        int dn = int.Parse(frow[0]);
        int an = int.Parse(frow[1]);
        string[] rows = new string[dn];
        int[] points = new int[an * dn];
        string[] mxp = Console.ReadLine().Split(' ');
        string[] mnp = Console.ReadLine().Split(' ');
        int maxp = int.Parse(mxp[0]);
        int minp = int.Parse(mnp[0]);
    
        // bucle a través de cada fila y dividirlas en números individuales
        for (int i = 0; i < dn; i++)
        {
            rows[i] = Console.ReadLine();
    
            string[] numbers = rows[i].Split(' ');
    
            for (int j = 0; j < numbers.Length; j++)
            {
                points[i * an + j] = int.Parse(numbers[j]);
            }
        }
    }
    

    En el bucle interno, utilizamos la fórmula i * an + j para calcular el índice del número actual en el array points. La variable i comienza en 0 y se incrementa con cada fila, mientras que la variable j comienza en 0 y se incrementa con cada número en la fila.

Comments are closed.