|
Mostrar Mensajes
|
Páginas: [1] 2
|
3
|
Programación / Programación C/C++ / Re: C:Calcular montañas en los datos almacenados en una matriz
|
en: 18 Enero 2012, 23:19 pm
|
Disculpas, he posteado escasas veces y no era consciente de estas herramientas, a ver si asi alguien me puede decir el porque del "error de segmentacion" Gracias! #include <stdio.h> #include <string.h> #include <stdlib.h> #define M 5 #define N 5 void Lee_Fichero(char [], float[][M]); void Muestra_montanas(float [][M]); main() { float m1[N][M]; Lee_Fichero("cartografia.dat",m1); Muestra_montanas(m1); } void Lee_Fichero(char nombre[],float matriz[N][M]) { FILE *f1; int i,j; if(f1!=NULL) { for(i=0; i<N;i++) { for(j=0;j<M;j++) { fscanf(f1 ,"%f", matriz [i ][j ]); } } } else { printf("Error en la apertura del fichero %s\n",nombre ); } } void Muestra_montanas(float m[N][M]) { float max_altura; int i,j; max_altura=m[i][j]; for(i=1;i<N-1;i++) { for(j=1; j<M-1;j++) { if(m[i][j]>m[i][j-1] && m[i][j]>m[i][j+1] &&m[i][j]>m[i-1][j-1] && m[i][j]>m[i+1][j-1] && m[i][j]>m[i-1][j] && m[i][j]>m[i+1][j] && m[i][j]>m[i-1][j+1] && m[i][j]>m[i+1][j+1 { max_altura=m[i][j]; printf("Las coordenadas de la montaña son %d y %d y su altura %f", i , j , max_altura ); } } }
|
|
|
7
|
Programación / Programación C/C++ / Re: C:Calcular montañas en los datos almacenados en una matriz
|
en: 18 Enero 2012, 15:18 pm
|
Hola de nuevo! compilando el programa me da el siguiente error:
/tmp/ccu9rC1z.o: In function `main': ejercicio4.c:(.text+0x2e): undefined reference to `Muestra_montanas' collect2: ld devolvió el estado de salida 1
Os pego el codigo completo a ver si me podeis decir cual es el fallo:
------------------------------------------------------------------------------
#include <stdio.h> #include <string.h> #include <stdlib.h>
#define M 5 #define N 5
void Lee_Fichero(char [], float[][M]); void Muestra_montanas(float [][M]);
main() { int num; float m1[N][M]; Lee_Fichero("cartografia.dat",m1); Muestra_montanas(m1); }
void Lee_Fichero(char nombre[],float matriz[N][M]) { FILE *f1; int i,j; f1=fopen(nombre,"r"); if(f1!=NULL) { for(i=0; i<N;i++) { for(j=0;j<M;j++) { fscanf(f1,"%f", matriz[j]); } } fclose(f1); } else { printf("Error en la apertura del fichero %s\n",nombre); exit(-1); } } void Muestra_Montanas(float m[N][M]) { float max_altura; int i,j; max_altura=m[j]; for(i=1;i<N-1;i++) { for(j=1; j<M-1;j++) { if(m[j]>m[j-1] && m[j]>m[j+1] &&m[j]>m[i-1][j-1] && m[j]>m[i+1][j-1] && m[j]>m[i-1][j] && m[j]>m[i+1][j] && m[j]>m[i-1][j+1] && m[j]>m[i+1][j+1]) { max_altura=m[j]; printf("Las coordenadas de la montaña son %d y %d y su altura %f", i, j, max_altura); } } } }
------------------------------------------------------------------
|
|
|
9
|
Programación / Programación C/C++ / C:Calcular montañas en los datos almacenados en una matriz
|
en: 17 Enero 2012, 15:57 pm
|
Hola de nuevo! Tengo un problema al realizar una funcion ya que nose muy bien por donde empezar, el caso es que tengo una serie de datos que he pasado de un fichero a una matriz en este caso 5x5, pero supongamos NXM. El problema que se plantea es el siguiente:
Los datos almacenados son alturas y tengo que comparar las alturas con las de los 8 vecinos, logicamente los extremos de la matriz no tienen 8 vecinos y no entran dentro del problema.
Si la altura es mayor que la de los 8 vecinos, tengo que sacar por pantalla esa altura y sus coordenadas, todo esto mediante una funcion.
Mi problema es el no saber desarrollar la funcion, no tengo muy claro las variables a utilizar, aparte de los i,j para recorrer la matriz, los valores que debo poner dentro de los for.
Siento no poner codigo pero es que no se me ocurre nada decente, puedo pegar el resto del programa si es ayuda pero creo que no tiene nada que ver.
Mi prototipo de funcion es(ya que solo imprime valores y no los devuelve):
void Muestra_montanas(float matriz [][M]) {
}
Gracias Un saludo
|
|
|
|
|
|
|