Hay que leer los datos de un fichero de dos columnas coordenadas.txt, pedir por consola que el usuario introduzca un numero (n) y debe hacer la siguiente operación n*(x+y).
Por consola debe imprimir el resultado máximo que se obtiene al hacer esa operación con todas las coordenadas del fichero y los puntos en los que se obtiene ese resultado, si hay puntos repetidos solo tiene que salir una vez por consola.
Un ejemplo:
Si n = 1 y el fichero es:
1 1
2 1
4 5
3 6
6 3
8 1
0 0
3 6
4 3
Por consola debería aparecer: " La solucion maxima es 9 y se obtiene en los puntos (4,5), (3,6), (6,3), (8,1)"
Tengo hecho el código pero no consigo que salga por pantalla todos los puntos en los que se consigue ese resultado, solo me sale el ultimo punto en el que se obtiene 9.
Mi codigo es:
Código:
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
int main()
{
double n;
std::cout << "Valor de n ";
std::cin >> n;
std::ifstream in("coordenadas.txt",std::ios::in);
double operacion, op_max, x_max, y_max;
std::vector<double> x0,y0;
while(!in.eof()){
double X,Y;
in >> X >> Y;
operacion = n*(X+Y);
if(operacion > op_max){
op_max = operacion;
x_max = X;
y_max = Y;
x0.clear();
y0.clear();
x0.push_back(X);
y0.push_back(Y);
}
else if(operacion == op_max){
op_max = operacion;
x_max = X;
y_max = Y;
x0.clear();
y0.clear();
x0.push_back(X);
y0.push_back(Y);
}
}
in.close();
std::cout << "La solucion maxima es " << op_max << " y se consigue en los puntos (" << x_max << "," << y_max << ")" << std::endl;
}
#include <fstream>
#include <vector>
#include <cmath>
int main()
{
double n;
std::cout << "Valor de n ";
std::cin >> n;
std::ifstream in("coordenadas.txt",std::ios::in);
double operacion, op_max, x_max, y_max;
std::vector<double> x0,y0;
while(!in.eof()){
double X,Y;
in >> X >> Y;
operacion = n*(X+Y);
if(operacion > op_max){
op_max = operacion;
x_max = X;
y_max = Y;
x0.clear();
y0.clear();
x0.push_back(X);
y0.push_back(Y);
}
else if(operacion == op_max){
op_max = operacion;
x_max = X;
y_max = Y;
x0.clear();
y0.clear();
x0.push_back(X);
y0.push_back(Y);
}
}
in.close();
std::cout << "La solucion maxima es " << op_max << " y se consigue en los puntos (" << x_max << "," << y_max << ")" << std::endl;
}