Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/05/2006, 00:32
Avatar de a n g e l u s
a n g e l u s
 
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 19 años
Puntos: 1
Exclamación matriz dinamica y punteros

HOLA A TODOS,

Hay momentos en que la memoria falla y no se puede hacer mas, estoy retomando la programacion en c++, pero no recuerdo.

necesito de vuestra ayuda,

primero si esta bien declarado la estructura.

luego mi pregunta es como hago, cuando creo la matriz y reservo dinamicamente espacio en la memoria, la llamo para ingresarle datos
ej. matriz->datos = 1

no recuerdo si es correcto y ya ha esta hora estoy fundido .
agradezo de antemano cualquier ayuda o aventon que me puedan dar para avanzar .


este es mi codigo, esta guardado como trabajo.c, y compilado con Turbo C++ 3.0

Código:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ALLOC.H>

typedef struct {
	int N, M;
	float **datos;
}matriz;

void ImprimirMatriz(const matriz m,int N,int M){//

int i,f,j,c;

	for(i=0;i<N;i++){
		printf("\n|");
		for(j=0;j<M;j++){
			printf("\t%i\t| ",*(*(m.datos+i)+j));
		}
	}
	printf("\n\n");
}



matriz MatrizCrear(int N, int M){

matriz *m;
int i;

	m->datos=((float**)malloc(N*sizeof(float*)));

	if(m->datos==NULL){
		printf("\n\t\tERROR:MEMORIA INSUFICIENTE");
		getch();
	exit(-1);
	}


	for(i=0;i<N;i++)
		*(m->datos+i)=((float*)malloc(M*sizeof(float)));

	if(*(m->datos+i)==NULL){
		printf("\n\t\tERROR:MEMORIA INSUFICIENTE");
		getch();
	exit(-1);
	}
}

matriz MatrizCrearIdentidad(int N){
matriz *m;
int f,c;

	for (f=0;f<N;f++){
		for (c=0;c<N;c++){
			if(f == c){
			   m->datos[f][c] = 1;
			}
			else{
			   m->datos[f][c] = 0;
			}
		}
	}

  getch();
}

void LeerMatriz(matriz m, int N, int M){

int i,j;

	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
			printf("ingrese dato %i.%i : ",i,j);
			scanf("%i",*(m.datos+i)+j);
		}
	}

}

void MatrizDestruir(matriz m, int N){
/*
	free(m.N);
	free(m.M);
	free(m.datos);
	free(m);
*/
}

//void MatrizInicializar(matriz m, int N, int M, double v){
void MatrizInicializar(matriz m, int N, int M, float v){
 int i,j;

	for(i=0;i<N;i++){
		for(j=0;j<M;j++){
		       *(m.datos+i)+j = &v;
		}
	}


}

//-> matriz MatrizCrear(int N, int M)
//-> matriz MatrizCrearIdentidad(int N);
//-> void MatrizDestruir(matriz m, int N);
//-> void MatrizInicializar(matriz m, int N, int M, double v);
//void MatrizCopiar(matriz a, const matriz b, int N, int M);
//int MatrizComparar(const matriz a, const matriz b, int N, int M);
//void MatrizSumar(matriz c, const matriz a, const matriz b, int N, int M);
//void MatrizRestar(matriz c, const matriz a, const matriz b, int N, int M);
//int MatrizMultiplicar(matriz c, const matriz a, int N, int M, const matriz b, int S, int T) ;
//double MatrizProductoPunto(const matriz a, const matriz b, int N, int M);
//void MatrizTraspuesta(matriz a, const matriz b, int N, int M);
//void MatrizAdjunta(matriz a, const matriz b, int N);
//double MatrizDeterminante(const matriz a, int N);
//void MatrizInversa(matriz a, const matriz b, int N);
//-> void LeerMatriz(matriz m, int N, int M);
//-> void ImprimirMatriz(const matriz m, int N, int M);



void main(){

matriz *m;
int N,M;
float v;

clrscr();

	printf("Ancho : ");
	scanf("%i",&N);
	printf("Largo : ");
	scanf("%i",&M);


ImprimirMatriz(m,N,M);
MatrizCrear(N,M);
MatrizCrearIdentidad(N);
LeerMatriz(m,N,M);
MatrizInicializar(m,N,M,v);

getch();

}
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post