Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Cuadrado magico!!!help

Estas en el tema de Cuadrado magico!!!help en el foro de C/C++ en Foros del Web. HOLA muy buenas quisiera saber si alguien sabe como tengo q crear una matriz cuadrado magico(1. Aparecen todos los números enteros desde 1 hasta N2. ...
  #1 (permalink)  
Antiguo 16/12/2010, 05:35
 
Fecha de Ingreso: diciembre-2008
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Cuadrado magico!!!help

HOLA muy buenas quisiera saber si alguien sabe como tengo q crear una matriz cuadrado magico(1. Aparecen todos los números enteros desde 1 hasta N2.
2. lA suma de los elementos de cada fila, cada columna, y las dos diagonales principales dan el mismo valor.)y tengo q crear una biblioteca llamada MATRIZ.h donde esten todas estas funciones,,,

struct Matriz {
// Implementación....
};

void CrearMatriz (Matriz *m, int f, int c); / /Reserva recursos e inicia m
int FilasMatriz (Matriz *m); // Devuelve número de filas de m
int ColumnasMatriz (Matriz *m); // Devuelve número columnas de m
void SetMatriz(Matriz *m, int i, int j, int v); // Asigna m(i,j)=v
int GetMatriz (Matriz *m, int i, int j); // Devuelve m(i,j)
void DestruirMatriz (Matriz *m); // Libera recursos de m
void LeerMatriz(Matriz *m);
void EscribirMatriz(Matriz *m);

si alguien me puede ayudar diciendome por donde empiezo,,,o sepa de alguna pagina q me enseñe como hacerle lo agradeceria
  #2 (permalink)  
Antiguo 16/12/2010, 05:45
Avatar de newboy_master  
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 16 años, 2 meses
Puntos: 46
Respuesta: Cuadrado magico!!!help

Aquí no se hacen los deberes, revisa estos cursos:

http://c.conclase.net/
http://www.chuidiang.com/clinux/

Y encima hoy estás de suerte, usando el buscador mira lo que me he encontrado:
http://www.forosdelweb.com/f14/urgen...ento-c-286269/

Salu2.
__________________
@jslirola - Programador Web Freelance.
  #3 (permalink)  
Antiguo 17/12/2010, 07:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Cuadrado magico!!!help

perdona, es q se me olvido....mencionar q el programa este es en C y no C++...,,y solo queria saber paginas q dijesen como se lo realizaba para ver si lo estaba haciendo bien,,,,,porq me salen algunos errore..s q no c q pueden ser,,,este es mi algoritmo...

struct mat
{
int *datos;
int fila,columna;
};

typedef struct mat Matriz;

void CrearMatriz (Matriz *m,int f,int c);
void CrearMatriz (Matriz *m,int f,int c)
{
int i,j;
m->fila=f;
m->columna=c;
m->datos=(int*)malloc(f*c* sizeof(int));

if(m->datos==NULL)
{
printf("no se pudo reservar la memoria");
}
else{
printf("se reservo la memoria correctamente");
}


}
int FilasMatriz (Matriz *m);
int FilasMatriz (Matriz *m)
{
return m->fila;

}
int ColumnasMatriz (Matriz *m);
int ColumnasMatriz (Matriz *m)
{
return m->columna;
}

void SetMatriz(Matriz *m, int i, int j, int v);
void SetMatriz(Matriz *m, int i, int j, int v)
{
//Precondicion****if(i>=0 && i<m->fila && j>=0 && j<m->columna)
v=m->datos[i][j];
funciones_matriz.c:58: error: subscripted value is neither array nor pointer
}

int GetMatriz (Matriz *m, int i, int j);
int GetMatriz (Matriz *m, int i, int j)
{
//if(i>=0 && i<m->fila && j>=0 && j<m->columna)
return m->datos[i][j];
funciones_matriz.c:65: error: subscripted value is neither array nor pointer
}
void DestruirMatriz (Matriz *m);
void DestruirMatriz (Matriz *m)
{

free(m->datos);
free(m);
}
void LerMatriz(Matriz *m);
void LerMatriz(Matriz *m)
{
int i,j;
for(i=0;i<m->fila;i++)
for(j=0;j<m->columna;j++)
scanf("%d",m->datos[i][j]);
//funciones_matriz.c:80: error: subscripted value is neither array nor pointer
}
void EscribirMatriz(Matriz *m);
void EscribirMatriz(Matriz *m)
{
int i,j;
for(i=0;i<m->fila;i++)
for(j=0;j<m->columna;j++)
printf("%d",m->datos[i][j]);
//funciones_matriz.c:89: error: subscripted value is neither array nor pointer

}


int main(int argc, char** argv) {

Matriz temp;
int F,C,V;



CrearMatriz(&temp,F,C);
FilasMatriz(&temp);
ColumnasMatriz(&temp);
SetMatriz(&temp,F,C,V);
GetMatriz(&temp,F,C);
DestruirMatriz(&temp);
LerMatriz(&temp);
EscribirMatriz(&temp);




return (EXIT_SUCCESS);
}
  #4 (permalink)  
Antiguo 17/12/2010, 09:29
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Cuadrado magico!!!help

los errores se deben a que estas tratando a una matriz unidimensional como una matriz bidimensional

cuando haces esto:

m->datos=(int*)malloc(f*c* sizeof(int));

estas creando una matriz de 1 fila y x columnas (las que sean)

por esa razon te da error en:

v=m->datos[i][j];

por que la estas tratando como matriz de 2 dimensiones. si quitas la [j]

v=m->datos[i];

no te da error.
  #5 (permalink)  
Antiguo 17/12/2010, 13:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 7
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Cuadrado magico!!!help

ok...pero entonces como seria con una matriz bidimensional....?¿?
  #6 (permalink)  
Antiguo 17/12/2010, 15:14
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Cuadrado magico!!!help

tienes que crear un array de punteros y a cada uno le asignas memoria. es decir lo que has hecho tu pero para tantos punteros como filas quieras.

tienes que crear un puntero a puntero

int **m

asignamos memoria para la matriz de punteros

m = (int **)malloc( filas * sizeof(int *))

m es de tipo int ** y m[] es de tipo int *

ahora se hace lo has hecho pero para cada m[]

bucle for
{
m[i]=(int *)malloc(columnas * sizeof(int))
}

Etiquetas: cuadrado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:56.