Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: Blazjker en 28 Febrero 2019, 23:42 PM

Título: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: Blazjker en 28 Febrero 2019, 23:42 PM
Buenas tardes a todos, el problema que tengo es que quiero pasar el siguiente código hecho en JAVA A C++, lo he intentado hacer,pero los resultados que me son dados DIFIEREN uno del otro.

A mi entender el de "JAVA" funciona bien, es decir, cumple con los requisitos. En cambio el de C++ no lo hace de forma completa.

Sin más preámbulos adjuntaré ambos códigos, para que si pueden, ayudarme a entender cuáles son los errores que he cometido en el "intento" de trasladar las líneas de código  a C++.


VERSIÓN JAVA

Código (java) [Seleccionar]
public class Ejerciciooo
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);

System.out.print("Enter the number of points: ");
final int numOfPoints = scan.nextInt();

double[][] points = new double[numOfPoints][2];
double shortestDistance=0;
double distance=0;
String closestPoint1="";
String closestPoint2="";

//enter x,y coords into the ix2 table points[][]
for (int i=0; i<numOfPoints; i++)
{
System.out.print("Enter point x" + i + ": ");
points[i][0] = scan.nextDouble();
System.out.print("Enter point y" + i + ": ");
points[i][1] = scan.nextDouble();
}

//get the distance between the point in the ith row and the (m+1)th row
//and check if it's shorter than the distance between 0th and 1st
for (int i=0; i<numOfPoints; i++)
{
//use m=i rather than 0 to avoid duplicate computations
for (int m=i; m<numOfPoints-1;m++)
{
double dx = points[i][0] - points[m+1][0];
double dy = points[i][1] - points[m+1][1];
distance = Math.sqrt(dx*dx + dy*dy);

//set shortestDistance and closestPoints to the first iteration
if (m == 0 && i == 0)
{
shortestDistance = distance;
closestPoint1 = "(" + points[0][0] + "," + points[0][1] + ")";
closestPoint2 = "(" + points[1][0] + "," + points[1][1] + ")";
}
//then check if any further iterations have shorter distances
else if (distance < shortestDistance)
{
shortestDistance = distance;
closestPoint1 = "(" + points[i][0] + "," + points[i][1] + ")";
closestPoint2 = "(" + points[m+1][0] + "," + points[m+1][1] + ")";
}
}
}
System.out.println("The shortest distance is: " + shortestDistance);
System.out.println("The closest points are " + closestPoint1 + " and " + closestPoint2);
}   
}



VERSIÓN C++

Código (cpp) [Seleccionar]

#include <conio.h>
#include <math.h>
#include <sstream>
#include <string>
using namespace std;

int main () {

int cantidad;
cout<<"Digite la cantidad de puntos que desea: "; cin>>cantidad;

double puntos [cantidad][2];
double dX = 0, dY = 0 , distancia = 0, distMasCorta = 0;

ostringstream osA,osB;

for (int i=0; i<cantidad; i++) {
cout<<"Digite el valor correspondiente a X '"<<i+1<<"': "; cin>>puntos[i][0];
cout<<"Digite el valor correspondiente a Y '"<<i+1<<"': "; cin>>puntos[i][1];

cout<<endl;
}

for (int i=0; i<cantidad; i++) {
for (int m=i; m<cantidad-1; m++) {

dX = puntos[i][0] - puntos[m+1][0];
dY = puntos[i][1] - puntos[m+1][1];

distancia = sqrt (dX * dX + dY * dY);

if (distancia < distMasCorta) {

distMasCorta = distancia;

osA << "(" << puntos[i][0] << "," << puntos[i][1] << ")";
osB << "(" << puntos[m+1][0] << "," << puntos[m+1][1] << ")";
}
}
}

cout<<"La distancia mas corta es de '"<<distMasCorta<<"'"<<endl;
cout<<"Los puntos más cercanos son: "<<osA.str()<<" y "<<osB.str()<<endl;

getch();
return 0;
}






Desde ya muchísimas gracias !
Título: Re: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: K-YreX en 1 Marzo 2019, 00:08 AM
Si puedes especificar un poco más cuando dices que los resultados difieren o que no lo hace de forma completa... En principio estoy dando por supuesto que ambos compilan sin problemas. :-X
Título: Re: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: Blazjker en 1 Marzo 2019, 01:00 AM
Cita de: YreX-DwX en  1 Marzo 2019, 00:08 AM
Si puedes especificar un poco más cuando dices que los resultados difieren o que no lo hace de forma completa... En principio estoy dando por supuesto que ambos compilan sin problemas. :-X


En el código de Java, ingreso por ejemplo las siguientes coordenadas.
x y

(1,2)

(5,10)

(3,4)

Y me dice que los puntos más cercanas entre sí son (1,2) y (3,4)

En cambio, en el de C++ , directamente ni me los toma , ya que cuando se ejecuta el "cout" no me marca los puntos ni nada.
Título: Re: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: K-YreX en 1 Marzo 2019, 01:21 AM
Vale, a ver, los errores son varios y te los voy dejando por aquí:
Título: Re: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: Blazjker en 1 Marzo 2019, 02:01 AM
Siguiendo los pasos que mencionaste, el código funciona similar a Java, desde ya muchísimas gracias por haberme ayudado , hay alguna manera para recompensarte ,es decir, hay algún modo para colocar puntajes o algo parecido, en forma de agradecimiento ?
Título: Re: Ayuda para pasar ESTE código hecho en JAVA A C++
Publicado por: K-YreX en 1 Marzo 2019, 03:00 AM
Cita de: Blazjker en  1 Marzo 2019, 02:01 AM
Siguiendo los pasos que mencionaste, el código funciona similar a Java, desde ya muchísimas gracias por haberme ayudado , hay alguna manera para recompensarte ,es decir, hay algún modo para colocar puntajes o algo parecido, en forma de agradecimiento ?
No, no hay ningún sistema de valoración. Pero para eso es el foro, para prestar ayuda voluntariamente. :-X