Foro de elhacker.net

Programación => Java => Mensaje iniciado por: trolleoatodos en 22 Agosto 2013, 21:19 pm



Título: RETO solvedor sistemas de ecuaciones (con solución)[JAVA]
Publicado por: trolleoatodos en 22 Agosto 2013, 21:19 pm
El reto consist en programar en una clase java,el código lo saqué en  una
tarde ,lo que se pide es que resuelva sistemas de ecuaciones lineales
y que las soluciones puedan ser una negativa o  dos positvas o dos negativas
http://www.vadenumeros.es/tercero/sistemas-de-ecuaciones.htm (http://www.vadenumeros.es/tercero/sistemas-de-ecuaciones.htm)
Y claro está tienen dos incógnitas x e y,que llegan hasta 19 , aunque se pued kmbiar
Y aquí va la solución
Código:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ekuations {


public static void main(String[] args)throws IOException{
int u;
int d;
int t;
int u1;
int d1;
int t1;
System.out.println("===============Nukemsolver v0.1==================");
System.out.println("===============Licencia creative commons=========");
System.out.println("===============created por valium7===============");

System.out.println("Introduzca var x");
u =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Introduzca var y");
d =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Introduzca var result");
t =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Ecuation introducida "+ u+"x" + " " +d+"y"+"="+t+ " Introduzca ahora la 2da ");
System.out.println("Introduzca var x");
u1 =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Introduzca var y");
d1 =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Introduzca var result");
t1 =Integer.parseInt( new BufferedReader(new InputStreamReader(System.in)).readLine());
System.out.println("Ecuation introducida "+ u1+"x" + " " +d1+"y"+"="+t1 );

for (double i =1;i<21;i++){  //COMPROBACIÓN
i-=1;
i =aniadir(i);
for (double i1=0;i1<21;i1++){
double fatemp[];
i1-=1;
// System.out.println("USados "+i+" "+i1);
i1 =aniadir(i1);
fatemp =math(u,d,i,i1);
if (fatemp[0]+fatemp[1]==t){
if(verificar(i,i1,u1,d1,t1)){
System.out.println("¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
break;}
}
}
}

for (double i =1;i<20;i++){  //SEGUNDA COMPROBACIÓN
i-=1;
i=aniadir(i);
for (double i1=0;i1>-20;i1--){
double fatemp[];
i1+=1;
// System.out.println("USados "+i+" "+i1);
i1 =aniadirminus(i1);
fatemp =math(u,d,i,i1);
if (fatemp[0]+fatemp[1]==t){
if(verificar(i,i1,u1,d1,t1)){
System.out.println("1¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
break;}
}
}
}


for (double i =1;i>-20;i--){ // TERCERA COMPROBACIÓN
i+=1;
i=aniadirminus(i);
for (double i1=0;i1<20;i1++){
double fatemp[];
i1-=1;
// System.out.println("USados "+i+" "+i1);
i1 =aniadir(i1);
fatemp =math(u,d,i,i1);
if (fatemp[0]+fatemp[1]==t){
if(verificar(i,i1,u1,d1,t1)){
System.out.println("2¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
break;}
}
}
}

for (double i =1;i>-20;i--){//CUARTA COMPROBACIÓN
i+=1;
i=aniadirminus(i);
for (double i1=0;i1>-20;i1--){
double fatemp[];
i1+=1;
// System.out.println("USados "+i+" "+i1);
i1 =aniadirminus(i1);
fatemp =math(u,d,i,i1);
if (fatemp[0]+fatemp[1]==t){
if(verificar(i,i1,u1,d1,t1)){
System.out.println("T¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
break;}
}
}
}

}

public static double aniadir(double a){ //Añadimos mitad a positivos
double mitad= 0.5;

double b = a + mitad;
// System.out.println("float obtenido "+b);
return b;


}
public static double aniadirminus(double a){//Añadimos mitad a negativs
double mitad= -0.5;

double b = a + mitad;
// System.out.println("float obtenido "+b);
return b;


}
public static double[] math(double a , double b ,double operar,double operar1){
double result = 0;
double result1 = 0;
result= a*operar;
result1= b*operar1;

double[] resultotal={result,result1};
return resultotal;

}
public static boolean verificar(double x,double y,int xotra, int yotra,int resultotra){
boolean tilt =false;
if(xotra*x+(yotra*y)==resultotra){tilt=true;}

return tilt;
}
}


Título: Re: RETO solvedor sistemas de ecuaciones (con solución)[JAVA]
Publicado por: trolleoatodos en 30 Agosto 2013, 04:21 am
¿nadie ? jajajja mortales


Título: Re: RETO solvedor sistemas de ecuaciones (con solución)[JAVA]
Publicado por: Alien-Z en 30 Agosto 2013, 12:27 pm
¡Buen trabajo!.

Un par de recomendaciones: El código queda más comprensible de cara a otros programadores cuando la información tiene identificadores significativos, en las variables de tu código hay que volver arriba varias veces para saber qué era exactamente cada dato.

Y para esto:

Código
  1. for (double i =1;i<21;i++){  //COMPROBACIÓN
  2. i-=1;
  3. i =aniadir(i);
  4. for (double i1=0;i1<21;i1++){
  5. double fatemp[];
  6. i1-=1;
  7. // System.out.println("USados "+i+" "+i1);
  8. i1 =aniadir(i1);
  9. fatemp =math(u,d,i,i1);
  10. if (fatemp[0]+fatemp[1]==t){
  11. if(verificar(i,i1,u1,d1,t1)){
  12. System.out.println("¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
  13. break;}
  14. }
  15. }
  16. }
  17.  
  18. for (double i =1;i<20;i++){  //SEGUNDA COMPROBACIÓN
  19. i-=1;
  20. i=aniadir(i);
  21. for (double i1=0;i1>-20;i1--){
  22. double fatemp[];
  23. i1+=1;
  24. // System.out.println("USados "+i+" "+i1);
  25. i1 =aniadirminus(i1);
  26. fatemp =math(u,d,i,i1);
  27. if (fatemp[0]+fatemp[1]==t){
  28. if(verificar(i,i1,u1,d1,t1)){
  29. System.out.println("1¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
  30. break;}
  31. }
  32. }
  33. }
  34.  
  35.  
  36. for (double i =1;i>-20;i--){ // TERCERA COMPROBACIÓN
  37. i+=1;
  38. i=aniadirminus(i);
  39. for (double i1=0;i1<20;i1++){
  40. double fatemp[];
  41. i1-=1;
  42. // System.out.println("USados "+i+" "+i1);
  43. i1 =aniadir(i1);
  44. fatemp =math(u,d,i,i1);
  45. if (fatemp[0]+fatemp[1]==t){
  46. if(verificar(i,i1,u1,d1,t1)){
  47. System.out.println("2¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
  48. break;}
  49. }
  50. }
  51. }
  52.  
  53. for (double i =1;i>-20;i--){//CUARTA COMPROBACIÓN
  54. i+=1;
  55. i=aniadirminus(i);
  56. for (double i1=0;i1>-20;i1--){
  57. double fatemp[];
  58. i1+=1;
  59. // System.out.println("USados "+i+" "+i1);
  60. i1 =aniadirminus(i1);
  61. fatemp =math(u,d,i,i1);
  62. if (fatemp[0]+fatemp[1]==t){
  63. if(verificar(i,i1,u1,d1,t1)){
  64. System.out.println("T¡Bingo!,¡Bango!,¡Bongo! , x igual a "+i+ " e y igual a "+i1);
  65. break;}
  66. }
  67. }
  68. }
  69.  
  70. }

¿Por qué no haces otro bucle anidado en vez de escribir 4 veces el mismo código?.

Un saludo.


Título: Re: RETO solvedor sistemas de ecuaciones (con solución)[JAVA]
Publicado por: trolleoatodos en 2 Septiembre 2013, 13:35 pm
gracias,¿un bucl anidado? no sé mi cerebro dió con la solución que vistes ,nada masxD