Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Reynega

#1
 Espero no estar infringiendo alguna regla del foro, de ser así, pido disculpas de antemano.

Leí las reglas para poder publicar un nuevo tema. Busque sobre temas relacionados y lo que encontré no me fue de mucha ayuda, espero puedan ayudarme en este tema.

Estoy elaborando un proyecto, dicho proyecto es elaborar una sopa de letras con matrices dinámicas(que el jugador pueda elegir el tamaño de la sopa de letras). Mi problema radica a la hora de modificar, imprimir e insertar en la matriz dinámica.

Probé en menor escala el siguiente código para tratar de hallar solución a mi problema y logre que realizara perfectamente todas las operaciones en el main, pero, si separo las operaciones en diferentes funciones, genera un error en tiempo de ejecución.

Citar
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

void asignar(char **matriz, int filas, int columnas);
void iniciar(char **matriz, int filas, int columnas);
void imprimir(char **matriz, int filas, int columnas);
void liberar(char **matriz, int filas, int columnas);

int main()
{   
   char **matriz = NULL;
   int columnas, filas;
   
   printf("\n\t CREANDO MATRIZ DINAMICA!");
   printf("\n\n\t# de filas: ");
   scanf("%d",&filas);
   printf("\n\t# de Columnas: ");
   scanf("%d",&columnas);
   
   asignar(matriz, filas, columnas);
   iniciar(matriz, filas, columnas);
   imprimir(matriz, filas, columnas);
   liberar(matriz, filas, columnas);
   
   getch();
   return 0;
   }
   
void asignar(char **matriz, int filas, int columnas)
{
   //ASIGNAR MEMORIA PARA EL ARRAY DE PUNTEROS
   matriz = ((char **)malloc(sizeof(char*)*filas));
      
   
   //ASIGNAR MEMORIA PARA CADA FILA
   for(int i=0;i<filas;i+=1)
   {   
      matriz = ((char *)malloc(sizeof(char*)*columnas));
      }
   }
   
void iniciar(char **matriz, int filas, int columnas)
{
   //INICIAR LOS ELEMENTOS DE LA MATRIZ DINAMICA
   for(int i=0;i<filas;i+=1)
   {   
      for(int j=0;j<columnas;j+=1)
      {   
         *(*(matriz+i)+j)='.';
         }
      }
   }
   
void imprimir(char **matriz, int filas, int columnas)
{
   //IMPRIMIENDO MATRIZ EN PANTALLA
   system("cls");
   for(int i=0;i<filas;i+=1)
   {   
      puts("\n");
      for(int j=0;j<columnas;j+=1)
      {   
         printf(" %c", *(*(matriz+i)+j));
         }
      }
   }
   
void liberar(char **matriz, int filas, int columnas)
{
   //LIBERAR MEMORIA ASIGNADA A CADA FILA
   for(int i=0;i<filas;i+=1)
   {   
      free(matriz+i);
      }
      
   //LIBERAR LA MEMORIA ASIGNADA AL ARRAY DE PUNTEROS
   free(matriz);
   }

Acaso estoy enviando los parámetros de la matriz mal?