problema distancias en c++
Publicado por juan (13 intervenciones) el 11/04/2020 20:27:40
Hola, tengo que resolver el siguiente programa en C++ y tengo algunos problemas. Las intrucciones para crear el programa son las siguientes:
Tenemos un fichero llamado coordenadas.txt que esta formado por dos columnas de numeros, la primera columna son las coordenadas x y la segunda columna son las coordenadas y. Puede haber puntos repetidos.
1º Pedir al usuario que introduzca por consola un punto, con las coordenadas x, y.
2º Ir leyedo el fichero coordenadas.txt. El programa debe ir calculando la distancia de cada punto del fichero al punto introducido por consola y debe ir guardando solamente la distancia mayor.
3º En la consola debe aperecer la distancia máxima entre el punto que hemos introducido por teclado y el punto o los puntos del fichero en el que se alcanza dicha distancia.
Yo he hecho lo siguiente:
Mis dudas son las siguientes:
1º Quiero asegurarme de que el fichero tiene las mismas coordenadas en x y en y. Habia pensado lo siguiente pero no funciona:
De hecho cuando en el fichero pongo una coordenada x o y de más la ignora
2º Al calcular la distancia entre los dos puntos, en la consola me aparecen todas las distancias y yo solo quiero la mayor de todas y los puntos en los que aparece.
No se si me he explicado bien XD
Tenemos un fichero llamado coordenadas.txt que esta formado por dos columnas de numeros, la primera columna son las coordenadas x y la segunda columna son las coordenadas y. Puede haber puntos repetidos.
1º Pedir al usuario que introduzca por consola un punto, con las coordenadas x, y.
2º Ir leyedo el fichero coordenadas.txt. El programa debe ir calculando la distancia de cada punto del fichero al punto introducido por consola y debe ir guardando solamente la distancia mayor.
3º En la consola debe aperecer la distancia máxima entre el punto que hemos introducido por teclado y el punto o los puntos del fichero en el que se alcanza dicha distancia.
Yo he hecho lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
const char puntosFichero[]="coordenadas.txt";
int main()
{
//Pedir las coordenadas del punto por consola
double x,y;
std::cout << "\n Introduzca el valor de x: ";
std::cin >> x;
std::cout << "\n Introduzca el valor de y: ";
std::cin >> y;
// Leer el fichero
std::ifstream inFich_vec(puntosFichero,std::ios::in);
//Si el fichero no se puede abrir da error y finaliza.
if(!inFich_vec){
std::cout << "El fichero no se puede abrir. ";
return 1;
}
std::vector<double> X, Y;
while(!inFich_vec.eof()){
double a,b;
X.push_back(a);
Y.push_back(b);
}
inFich_vec.close();
if (X.size() == 0){
std::cout << "El fichero esta vacio";
return 1;
}
//----------------------------------
//DISTANCIA ENTRE LOS DOS PUNTOS
//------------------------------
double distancia = 0;
for(unsigned int i=0; i < X.size(); i++){
distancia = sqrt(pow((X-x),2)+pow((Y-y),2));
std::cout << "Distancia del punto a la recta: " << distancia <<std::endl;
}
return 0;
}
Mis dudas son las siguientes:
1º Quiero asegurarme de que el fichero tiene las mismas coordenadas en x y en y. Habia pensado lo siguiente pero no funciona:
1
2
3
4
if(X.size() != Y.size()){
std::cout << "ERROR: falta una coordenada " << std::endl;
return 1;
}
2º Al calcular la distancia entre los dos puntos, en la consola me aparecen todas las distancias y yo solo quiero la mayor de todas y los puntos en los que aparece.
No se si me he explicado bien XD
Valora esta pregunta


0