Java - Ayuda para realizar calculo para cortar dos piezas del mismo ancho

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para realizar calculo para cortar dos piezas del mismo ancho

Publicado por Marcelo (3 intervenciones) el 11/01/2019 16:36:33
Analice el siguiente problema:
Andrea tiene dos piezas de tela. Una pieza tiene 72 centímetros de ancho mientras que la otra tiene 90 centímetros de ancho. Ella quiere cortar ambas piezas en tiras del mismo ancho, pero que sean lo más anchas posible. ¿Qué tan ancho debería cortar las tiras?
Desarrolle un programa en Java que permita resolver no sólo ese problema, sino cualquier otro problema similar en donde únicamente cambian las dimensiones de las piezas de tela. Su programa debe implementar recursividad.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para realizar calculo para cortar dos piezas del mismo ancho

Publicado por Marcelo (3 intervenciones) el 12/01/2019 15:30:36
Si se pero no se como ejecutarlo ya que soy nuevo recién estoy aprendiendo quisiera que me ayudara por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda para realizar calculo para cortar dos piezas del mismo ancho

Publicado por Kabuto (1381 intervenciones) el 13/01/2019 00:13:49
Hola. Como bien menciona el compañero, todo apunta a que el procedimiento a seguir es calcular el Maximo Común Divisor (MCD) del ancho de las dos telas.

Hay muchas formas de calcular el MCD, pero la más efectiva y probablemente la más sencilla de programar, sea utilizando el Algoritmo de Euclides
Además es perfecta para hacer un método recursivo.

Este algoritmo es muy sencillo.
Supón que tenemos dos numeros, A y B, y queremos calcular el MCD de estos dos números.

El procedimiento a seguir es dividir A entre B y fijarnos en el resto de la división.
Esto en Java lo conseguimos con el operador "%" , o también llamado "módulo".

Algo así:
1
int resto = a % b;

Si el resto es igual a 0, significa que B es el MCD que buscámos, ¡¡genial!!

Pero, si no es 0, debemos seguir buscando, solo que ahora B ocupará el puesto de A, y el resto que hemos obtenido pasará a ocupar el puesto de B, y de nuevo operamos para obtener el resto de estos dos nuevos valores.
Y esto se repite, una y otra vez, hasta que obtengamos un resto con valor 0.

Esto, escrito en un método recursivo, es tan sencillísmo como esto:
1
2
3
4
5
6
7
8
9
static int getMCD(int a, int b)
{
    int resto = a % b;
    if (resto == 0)
        return b; //Cuando el resto es 0, el segundo valor es el MCD
    else
        //Como no hemos obtenido resto 0, hacemos llamada recursiva pasando nuevos valores para a y b
        return getMCD(b , resto);
}

El método recibe por parámetros dos números, A y B.
Calcula el resto.
Si resto es 0, retornamos el valor de B porque este será el CMD que buscamos.
Si no es 0, "retornamos" una llamada recursiva a este mismo método, solo que ahora B ocupaba el puesto de A, y el "resto" ocupa el puesto de B.

Y estas llamadas recursivas se iránm repitiendo hasta que obtengamos un resto igual a cero.


Teniendo ya este método en nuestras manos, ya solo queda emplearlo en un sencillo programa que pida al usuario el ancho de dos telas y lo pase por parámetros ha dicho método.
Aqui ya el programa completo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Scanner;
 
public class MCD {
 
	/**
	 * Método recursivo que calcula el Maximo Comun Divisor de dos
	 * números naturales utilizando el Algoritmo de Euclides.
	 * @see <a href="https://es.wikipedia.org/wiki/Algoritmo_de_Euclides#Algoritmo_de_Euclides_tradicional">Algoritmo Euclides Tradicional</a>
	 * @param a int Primer entero natural
	 * @param b int Segundo entero natural
	 * @return int MCD calculado para los dos enteros naturales.
	 */
	static int getMCD(int a, int b)
	{
		int resto = a % b;
		if (resto == 0)
			return b; //Cuando el resto es 0, el segundo valor es el MCD
		else
			//Como no hemos obtenido resto 0, hacemos llamada recursiva pasando nuevos valores para a y b
			return getMCD(b , resto);
	}
 
	public static void main(String[] args) {
 
		Scanner teclado = new Scanner(System.in);
		System.out.print("Ancho en cm de la primera tela: ");
		int tela1 = teclado.nextInt();
		System.out.print("Ancho en cm de la segunda tela: ");
		int tela2 = teclado.nextInt();
 
		System.out.println("Ancho ideal a cortar: " + getMCD(tela1, tela2));
		teclado.close();
	}
 
}

Pues eso, muy sencillo.
Para entenderlo mejor no dejes de leer el enlace que puse más arriba a Wikipedia, explicando como funciona el Algoritmo de Euclides.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 6 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda para realizar calculo para cortar dos piezas del mismo ancho

Publicado por Marcelo (3 intervenciones) el 13/01/2019 15:02:17
muchas gracias por la explicacion amigo me sirvio de mucho te agradesco por explicarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar