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);
}
#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?