Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: francis polo en 27 Junio 2014, 06:11 am



Título: ayuda en c
Publicado por: francis polo en 27 Junio 2014, 06:11 am
 ayudame por favor donde esta el error ? como calculo la distancia de entre dos puntos (de ambos con coordenada x e y positivas )

#include<stdio.h>
#include<math.h>


int distancia(int x1, int x2, int y1, int y2);

main()
{
  int coorX1 , coorX2 , coorY1 , coorY2 ;
 
  printf("ingrese 2 puntos\ncoordenada x1:\ncoordenada y1:\n");
  scanf("%d%d",&coorX1,&coorY1);
 
  printf("ingrese 2 puntos\ncoordenada x2:\ncoordenada y21:\n");
  scanf("%d%d",&coorX2,&coorY2);
 
  if(coorX1>0 && coorX2>0 && coorY1>0 && coorY2>0 ) {
   
    printf("la distancia es %d\n",distancia(coorX1 , coorX2 , coorY1 , coorY2) );
  }
 
  else {
    printf("los puntos tiene que ser de coordenadas positivos \n");
  }
 
  return 0 ; 
 
}

  int distancia(int x1, int x2, int y1, int y2)
  {
    int distancia ;
    distancia = sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) );
 
    return distancia ;
  }
 




Título: Re: ayuda en c
Publicado por: engel lex en 27 Junio 2014, 06:32 am
cuando publiques codigo, usa las etiquetas GeSHi (arriba de los emoticones a la derecha)


tu codigo tiene los siguientes errores....

- declaras una variable con el mismo nombre de la funcion (distancia)
- la variable y la función son "int" (entero), pero "sqrt" devuelve un valor "double"(decimal de doble precisión) eso causa un error
- en tu ultimo printf, imprimes "la distancia es %d\n" eso imprimirá un numero sin coma, debe usar %f en lugar de %d
- los valores que puedes ingresar no incluyen 0 (algunos incluyen el 0 como "positivo" para estos casos ya que es la base del eje de coordenadas)


de resto el codigo se ve bien