Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - deifk

#1
Cierto,todo solucionado, muchas gracias de verdad, me han sido de gran ayuda, habia olvidado cosas como esas, llevaba unas semanas sin trabajar con matrices y se me olvido el ampersant.

Un saludo!
#2
max_altura=m[i][j];

esta sentencia creo que me sobraba, nose porque estaba ahí aun asi sigo teniendo error de segmentacion, ¿que es lo que que dices que es necesario inicializar?
no se supone que i y j adquieren el valor -1 al ejecutarse el for?
#3
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;
 
 f1=fopen(nombre,"r");
 
 if(f1!=NULL)
 {
   for(i=0; i<N;i++)
   {
    for(j=0;j<M;j++)
     {

     fscanf(f1,"%f", matriz[i][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[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);
       }
   }
 }

#4
el caso es que al pegar el codigo todos los "i" de la matriz se han borrado ponen como que estan y luego no salen, asi que nose que podra ser
#5
alguna idea del porque de un error de segmentacion?
#6
Dios mira que mire a ver si era algo de eso..
ahora bien me compila pero al ejecutar me da un error de segmentacion, a que se puede deber?
gracias
un saludo
#7
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);
       }
   }
 }  
   
   
}    

------------------------------------------------------------------
#8
Gracias a todos, ahora lo mirare mas detalladamente , ahora se por donde van los tiros.

Un saludo

P.D: No pretendia que me lo dierais hecho, solo queria una indicacion hacia el camino correcto como las que me habeis dado, gracias
#9
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
#10
Gracias por la respuesta rapida solo decir..
/FACEPALM
-.- Saludos :P