MATRICES en lenguaje C

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Lowi97
Mensajes: 1
Registrado: 29/10/2019 5:10 pm

MATRICES en lenguaje C

#1 Mensaje por Lowi97 » 29/10/2019 5:22 pm

Buenas,
Estuve intentando rellenar una matriz con un caracter aleatorio, necesito que este caracter se posicione aleatoriamente en una matriz 5X10 solo tres veces.
La idea es que se pueda imprimir la matriz vacía exceptuando 3 posiciones que van a ser ocupadas aleatoriamente con una 'E'. Es en lenguaje C y solo con bibliotecas stdio.h, stdlib.h, time.h. Espero que alguien pueda ayudarme con esto, no logro entender bien en que me estoy equivocando o quizas me faltan algo, no soy bueno con matrices. Muchas gracias de antemano!

Código: Seleccionar todo

int main(){
    char matriz[5][10];
    int i;
    int j;
​
    srand((unsigned)time(NULL));
    i = rand()%5;
    j = rand()%10;
​
    for(i = 0; i<5; i++){
      for(j = 0; j<10; j++){
        matriz[i][j]= 'E';
        printf("|%c",matriz[i][j]);
        }
        printf("|\n");
    }
​
​
    return 0;
​
}

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: MATRICES en lenguaje C

#2 Mensaje por dehm » 31/10/2019 10:58 am

En tú código hallas unos valores aleatorios iniciales para i y j, pero luego no haces uso de ellos y lo que haces es recorrer la matriz y dando el valor 'E' a todos los valores.

Mi propuesta

Código: Seleccionar todo

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

#define FILAS 5
#define COLUMNAS 10

int main()
{
    char matriz[FILAS][COLUMNAS] = {};
    int i;
    int j;
    srand((unsigned)time(NULL));
    //colocar la 'E' en tres lugares aleatrios
    for (int n=0; n<3; n++)
    {
        i = rand()%FILAS;
        j = rand()%COLUMNAS;
        matriz[i][j]= 'E';
    }
    //representacion
    for(i = 0; i<FILAS; i++)
    {
        for(j = 0; j<COLUMNAS; j++)
        {

            printf("|%c",matriz[i][j]);
        }
        printf("|\n");
    }
    return 0;
}
Lo más sencillo entiendo que es hacer un bucle en el que en tres pasadas halle 1 valor aleatorio para i y otro tanto para j, asignar a la posición [j] ese valor y volver a repetir la secuencia.
Aprendiendo

Avatar de Usuario
kiko66
Mensajes: 39
Registrado: 11/10/2019 10:51 am

Re: MATRICES en lenguaje C

#3 Mensaje por kiko66 » 31/10/2019 4:01 pm

hola lowi

ademas de lo que te ha dicho dehm fijate que el inicializa la matriz,
:!: es importante hacerlo porque ademas de "basura" puede tener alguna 'E' inesperada

hola dehm

he probado tu codigo y la mala suerte que la primera vez que lo ejecutaba me salian
solo dos 'E' :shock: evidentemete el generador no es muy bueno :roll:

ya por aburrimiento he hecho el programa a mi manera :wink:

Código: Seleccionar todo

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

#define FIL 5
#define COL 10

 void impMatriz(char m[FIL][COL], char ch){  // imprimir la matriz

   puts("\n");                         
   for(int f=0; f<FIL ;f++){           // bucle de filas
      for(int c=0; c<COL ;c++)         // bucle de columnas
         if (m[f][c])                  // compruebo si va una 'E' o un hueco
            printf("|%c", m[f][c]);    // o pongo la 'E' 
         else 
            printf("|%c", ch);         // o pongo el hueco
      puts("|");
   } 
}

int main(){

   char matriz[FIL][COL]={0};    // creo e inicializo la matriz con ceros
   
   impMatriz(matriz, '-');       // imprime la matriz vacia

   srand((unsigned)time(NULL));  // inicializa el generador de aleatorios

   int i=0;                      // contador de 'E'
   do{
      int f=rand()%FIL;          // fila aleatoria
      int c=rand()%COL;          // columna aleatoria

      if (matriz[f][c]!='E') {   // si no hay 'E' en la casilla aletoria
         matriz[f][c]='E';       // le pongo una 'E' en la casilla aleatoria
         i++;                    // cuento las 'E' que he puesto
      }  
   }while (i<3);                 // compruebo si he puesto todas las 'E'

   impMatriz(matriz, ' ');       // imprime la matriz vacia solo con las 'E'
 
   return EXIT_SUCCESS;          // salida exitosa del programa                     
}
:roll: para cuando el resaltado de codigoooo

saludos

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: MATRICES en lenguaje C

#4 Mensaje por dehm » 01/11/2019 6:24 am

Buena observación, @kiko66 , hay que comprobar que no se repitan los índices! :wink:
Aprendiendo

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados