Autor
|
Tema: Ayuda para pasar ESTE código hecho en JAVA A C++ (Leído 2,768 veces)
|
Blazjker
Desconectado
Mensajes: 6
|
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 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; //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++ #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 !
|
|
|
En línea
|
|
|
|
K-YreX
|
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.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Blazjker
Desconectado
Mensajes: 6
|
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. 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.
|
|
|
En línea
|
|
|
|
K-YreX
|
Vale, a ver, los errores son varios y te los voy dejando por aquí: - Antes de nada no está incluido <iostream> para poder hacer las entradas/salidas de pantalla <cin> y <cout>.
- Si inicializas <distMasCorta = 0> y luego buscas dos puntos cuya distancia sea menor a eso, no creo que los encuentres nunca...
- Los dos bucles <for> anidados están al revés. El exterior es el que tiene que acabar antes y el interior el que tiene que llegar hasta el final.
Y ahora unos consejos que nunca están de más : - No utilices <conio.h>. No es estándar por lo que algunos compiladores no lo admiten.
- El <getch()> que usas de <conio.h> sustitúyelo por <cin.get()> que está en <iostream>.
- Las librerías que acaban en ".h" (versión C) tienen su versión de C++ sin el ".h" y empezando por "c" <cmath>.
- El bucle <for> interno en vez de inicializar <m = i> y después usar siempre <m+1>; inicialízalo en <m = i+1> y así sólo tendrás que usar <m> luego.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
Blazjker
Desconectado
Mensajes: 6
|
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 ?
|
|
« Última modificación: 1 Marzo 2019, 02:15 am por Blazjker »
|
En línea
|
|
|
|
K-YreX
|
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.
|
|
|
En línea
|
cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda para instertar una redirección en este codigo
Programación C/C++
|
itzprox
|
0
|
1,909
|
11 Abril 2019, 17:59 pm
por itzprox
|
|
|
Ayudaa a pasar este codigo en c a c++ :(
Programación C/C++
|
jklm
|
1
|
2,169
|
4 Julio 2019, 16:01 pm
por K-YreX
|
|
|
Pasar este código Java a C
Programación C/C++
|
Deivid_Math
|
3
|
5,136
|
1 Mayo 2020, 22:21 pm
por Deivid_Math
|
|
|
Pasar este programa en java a C
Programación C/C++
|
3L_GARCIAS
|
0
|
1,884
|
31 Octubre 2022, 21:45 pm
por 3L_GARCIAS
|
|
|
Ayuda para obtener el código de un juego hecho en Game Maker
Ingeniería Inversa
|
Super3090
|
1
|
2,273
|
14 Noviembre 2024, 09:37 am
por karmany
|
|