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

tabla bidimensional

Estas en el tema de tabla bidimensional en el foro de C/C++ en Foros del Web. #include <stdio.h> #include <stdlib.h> #include <string.h> #include "Matriz.h" typedef struct Matriz{ int filas; int columnas; struct Matriz *sig; }; typedef struct Matriz * Matriz; Matriz ...
  #1 (permalink)  
Antiguo 11/04/2015, 17:25
 
Fecha de Ingreso: abril-2015
Mensajes: 9
Antigüedad: 9 años
Puntos: 0
tabla bidimensional

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Matriz.h"

typedef struct Matriz{
int filas;
int columnas;
struct Matriz *sig;
};
typedef struct Matriz * Matriz;

Matriz MatrizCrea(int n, int m){
Matriz aux = malloc(sizeof(struct Matriz)*n*m);
aux->filas = n;
aux->columnas = m;
aux->sig=NULL;
return aux;
}
void MatrizLibera(Matriz v){
while(v!=NULL){
Matriz aux = v;
v=aux->sig;
free(aux);
}
}
// Devuelve el número de filas de la matriz v.
int MatrizFilas(Matriz v){
Matriz aux = v;
int i,j;
int contadorf = 0;
for(i=0;i<aux->filas;i++){
contadorf = contadorf+1;
for(j=0;j<aux->columnas;j++){
}
}
return contadorf;
}
// Devuelve el número de columnas de la matriz v.
int MatrizColumnas(Matriz v){
Matriz aux = v;
int i,j;
int contadorc = 0;
for(i=0;i<aux->filas;i++){
for(j=0;j<aux->columnas;j++){
contadorc=contadorc+1;
}
return contadorc;
}
}
// Asigna x al elemento (i,j) de la matriz v.
// 1 <= i <= MatrizFilas(v)
// 1 <= j <= MatrizColumnas(v)
void MatrizAsigna(Matriz v, int i, int j, float x){
Matriz aux = v;
float tabla[aux->filas][aux->columnas];
for(i=0;i<aux->filas;i++){
for(j=0;j<aux->columnas;j++){
printf("\nIndicar el valor a ingresar : ");
scanf("%f",&tabla[i][j]);

}
}

}
// Devuelve el elemento (i,j) de la matriz v.
// 1 <= i <= MatrizFilas(v)
// 1 <= j <= MatrizColumnas(v)
float MatrizRecupera(Matriz v, int i, int j){
Matriz aux = v;

}
// Devuelve la matriz resultado de sumar las matrices v1 y v2
// MatrizFilas(v1) = MatrizFilas(v2)
// MatrizColumnas(v1) = MatrizColumnas(v2)
Matriz MatrizSuma(Matriz v1, Matriz v2){
Matriz aux = v1;
}
// Imprime en pantalla la matriz v con el formato siguiente.
// Ejemplo 2 x 3:
// 3.6 2.1-3.8
// 0.2-12.0 2.1
void MatrizImprime(Matriz v){
Matriz aux = v;
int i,j;
float tabla[aux->filas][aux->columnas];
for(i=0;i<aux->filas;i++){
for(j=0;j<aux->columnas;j++){
printf("\nFila %d , Columna %d : %f \n",i,j,tabla[i][j]);

}
}
}


int main(void){
int m,n,opcion,i,j;
float x;
Matriz v1=NULL;
Matriz v=NULL;

do{
printf("\n1.- Crea la matriz");
printf("\n2.- Libera Matriz");
printf("\n3.- Indicar numero de filas");
printf("\n4.- Indicar numero de columnas");
printf("\n5.- Indica la casilla x las filas y la columnas");
printf("\n6.- Devolver un numero de una casilla");
printf("\n7.- Sumar dos matrices");
printf("\n8.- Imprimir la matriz");
printf("\n9.- Salir\n");
printf("\nElegir opcion : ");
scanf("%d",&opcion);
switch(opcion){
case 1:
if(v==NULL)
printf("\nIndicar el numero de filas : ");
scanf("%d",&n);
printf("\nIndicar el numero de columnas : ");
scanf("%d",&m);
v=MatrizCrea(n,m);
break;
case 2:
if(v!=NULL)
MatrizLibera(v);
break;
case 3:
if(v!=NULL)
printf("\nEl numero de filas es : %d\n",MatrizFilas(v));
break;
case 4:
if(v!=NULL)
printf("\nEl numero de columnas es : %d\n",MatrizColumnas(v));
break;
case 5:
if(v!=NULL)
MatrizAsigna(v,i,j,x);
break;
case 6:
if(v!=NULL)
MatrizRecupera(v,i,j);
break;
case 7:
if(v!=NULL)
MatrizSuma(v,v1);
break;
case 8:
if(v!=NULL)
MatrizImprime(v);
break;
case 9:
if(v!=NULL)
printf("\nPresione Enter para salir\n");
break;
default:
printf("\nElija otra opcion\n");
break;
}
}while(opcion!=9);

}


esto es lo que tengo hecho pero me compila en parte,en la funcion de impresion no imprime la matriz , yo pienso que no la introduzco correctamente, incluso pienso que en vez de una pila enlazada a lo mejor deberia utilizar una pila contigua, si alguien puede ayudarme se lo agradeceria en el alma, un saludo, y gracias de antemano.

Etiquetas: funcion, int, numero, tabla
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 20:46.