/* * Archivo: raizCuadrada.java * * Descripci'on: programa tal que dado un real no negativo 'x' y una holgura * (real) 'e', determina la raiz cuadrada positiva 'y' aproximada * de 'x' con holgura 'e'. * Esto corresponde a: | x - y*y | <= e /\ y >= 0. * Permite probar operaciones b'asicas sobre reales y booleanos, y * condicional e iteraci'on sencilla. * * Fecha: 21 de junio de 2010 * */ class raizCuadrada { public static void main (String args[]) { final double x = Console.readDouble("Valor de x: "); final double e = Console.readDouble("Valor de la holgura permitida: "); double y = -1; double z = 0; { double inf = 0; double sup = x + 1; boolean enc = false; while (inf != sup && !enc) { final double k = (inf + sup) / 2; if (k*k > x) { z = k*k - x; } else { z = x - k*k; } if (z <= e) { inf = sup; enc = true; y = k; } else if (k*k > x) { sup = k; } else if (x > k*k) { inf = k; } } } if (y*y > x) { z = y*y - x; } else { z = x - y*y; } System.out.println("El valor de la raiz aproximada de " + x + " es: " + y + ". Se ha considerado una holgura maxima " + "permitida de " + e + ". El cuadrado de esta raiz " + "es " + (y*y) + " y su diferencia con " + x + " es " +z); } }