Foros del Web » Programación para mayores de 30 ;) » Java »

Programa en java

Estas en el tema de Programa en java en el foro de Java en Foros del Web. Saludos!! necesito un poco de ayuda con la resolución de un problema, lo he hecho pero no sé si está bien Os dejo el problema ...
  #1 (permalink)  
Antiguo 24/05/2011, 09:45
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 6 meses
Puntos: 0
Programa en java

Saludos!!
necesito un poco de ayuda con la resolución de un problema, lo he hecho pero no sé si está bien

Os dejo el problema y la solución que he hecho, a ver si le podeis echar un vistazo, que tengo varias dudas:

1) Leer de fichero una secuencia de pares de enteros positivos, y escribir en otro cada par de números
junto con su máximo común divisor. Al final del fichero se añadirá una línea indicando cuántos pares
se han procesado.

Código:

import java.util.*;
import java.io.*;

public class p7ej1{
public static void main(String[] args) {
String nomEnt, nomSal;
int a,b,x,mcd,auxA,auxB,cp;
Scanner fEnt=null;
PrintWriter fSal=null;
Scanner teclado = new Scanner(System.in);
System.out.println("Lectura desde archivo de secuencia de pares"
+ "enteros y escritura de su MCD");
System.out.print("Archivo con secuencia de enteros:");
nomEnt = teclado.next();
System.out.print("Archivo a generar: ");
nomSal = teclado.next();
try {
fEnt = new Scanner(new BufferedReader(new FileReader(nomEnt)));
fEnt.useLocale(Locale.US);
fSal= new PrintWriter(new BufferedWriter(new FileWriter(nomSal)));
while (fEnt.hasNext()) {
a= fEnt.nextInt();
b= fEnt.nextInt();
cp = 0;
if(b>a){
x = b;
b = a;
a = x;
}
auxA= a;
auxB= b;
do{
x = b;
b = a % b;
a = x;
mcd = x;
}while (b!=0);
cp = cp +1;
fSal.println( auxA + "" + auxB + "" + mcd);
fSal.println("Se han procesado" + cp +"pares de números");}

} catch (Exception e) {
System.out.println("Excepción: " + e.getMessage());
} finally {
if (fEnt != null)
fEnt.close();
if (fSal != null)
fSal.close();
}
}
}

En negrita está la solución propiamente dicha
a ver el tema es que el maximo comun divisor es inmediato si uno de los numeros es divisible pro el otro (quiere decir que el resto = 0)
si no son divisibles, se obtiene el MCD del resto de esa division
Para ello con este cuerpo debería sobrar
x = b;
b = a % b;
a = x;
pero como me piden que escribe los numeros (a,b) en el fichero de salida (además del MCD) he creado dos variables auxiliares donde guardo las respectivas secuencias, y luego les doy salida
parece lógico, pero está bien hecho? xD

gracias de antemano!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:01.