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.

Cómo tomar entrada formateada en C.

Tengo que tomar la entrada para una matriz en C. Una entrada de muestra sería algo así como esto:

33 33 2

000000000000000000000010000000000

000000000000000000000111000000000

000000000000000000001110100000000

000000000000000000011111111000000

000000000000000000001011100000000

000000000000000000000111000000000

000000000000000000000010000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

011111111111110000000000000000000

011011111111110000000000000000000

011111111110110000000000000000000

011111111111110000000000000000000

011111111111110000000000000000000

011111011111110000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

000000000000000000000000000000000

Aquí, 33 y 33 son las filas m y columnas n. 2 es el número de patrones en la cuadrícula entera y el resto es una matriz.

¿Cómo podría ingresar esta matriz en un arreglo en C? He estado teniendo problemas con esto por bastante tiempo. Este es mi código actual.

“`c

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int **array;

<pre><code>int m = atoi(argv[1]);
int n = atoi(argv[2]);

array = calloc(m, sizeof(int *));
for (int i = 0; i < m; i++) {
array[i] = calloc(n, sizeof(int));
}

for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++)
{
/*Código para obtener la entrada desde*/
}

}

for (int i = 0; i < m; i++) {
free(array[i]);
}

free(array);

return 0;
</code></pre>

}
“`</stdlib.h></stdio.h>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para ingresar la matriz en un array en C, puedes modificar tu código existente de la siguiente manera:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) 
    {
        int **array;
    
        int m = atoi(argv[1]);
        int n = atoi(argv[2]);
        int patterns = atoi(argv[3]);
    
        array = calloc(m, sizeof(int *));
        for (int i = 0; i < m; i++) {
            array[i] = calloc(n, sizeof(int));
        }
    
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++)
            {
                scanf("%1d", &array[i][j]); // lee un caracter a la vez
            }
        }
    
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++)
            {
                printf("%d ", array[i][j]); // imprime el array para verificar la entrada
            }
            printf("\n");
        }
    
        for (int i = 0; i < m; i++) {
            free(array[i]);
        }
    
        free(array);
    
        return 0;
    }
    

    En el código modificado, se usa la función scanf para tomar la entrada carácter por carácter. El especificador %1d se usa para leer solo un carácter a la vez. La matriz de entrada se ingresa en el array y se puede imprimir el contenido del array para verificar si la entrada fue correcta.

    ¡Espero que esto te ayude!</stdlib.h></stdio.h>

Comments are closed.