30/05/2006, 00:32
|
| | | Fecha de Ingreso: enero-2006 Ubicación: Chile
Mensajes: 237
Antigüedad: 19 años Puntos: 1 | |
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 |