Ejercicio Tercer Parcial - Problema 1. Cálculo de áreas de… · Programació II UDL 2010
Tema: Ficheros en Java: texto secuencial y acceso directo binario · Del examen Exámenes de Recuperación y Tercer Parcial de Programación 2 (Curso 2010/2011) (2010)
Enunciado
4. Tercer Parcial - Problema 1. Cálculo de áreas de figuras desde fichero
Dado un fichero secuencial de texto estructurado por líneas, cada una de ellas describe una figura geométrica de acuerdo con el formato:
tipo, x, y, anchura, altura
Donde:
tipo: corresponde al tipo de figura, restringido exclusivamente a GRect (rectángulo) o GOval (óvalo).
x, y: coordenadas de posicionamiento espacial.
anchura, altura: magnitudes dimensionales de la figura geométrica.
Ejemplo de contenido:
GRect, 20.0, 12.3, 23.2, 100.0
GOval, 18.4, 15.3, 245.89, 112.25
...
Se pide desarrollar un programa que procese un fichero con esta información y obtenga la suma acumulada de las áreas de la totalidad de figuras contenidas en él.
Consideraciones a tener en cuenta:
Aplicar descomposición funcional (diseño descendente), modularizando el código en métodos auxiliares y evitando concentrar la lógica en un único bloque.
Se garantiza que el fichero está bien formado: los tipos son válidos y la cantidad y tipología de los datos numéricos son consistentes.
El área de un rectángulo se define como: .
El área de un óvalo se calcula como: .

Solución
Según los criterios oficiales de corrección
Se pide desarrollar un programa que procese un fichero con esta información y obtenga la suma acumulada de las áreas de la totalidad de figuras contenidas en él.
Solución: ```java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; public class SumaAreasFiguras { public static double calcularArea(String tipo, double anchura, double altura) { if (tipo.equals("GRect")) { return anchura * altura; } else if (tipo.equals("GOval")) { return (Math.PI / 4.0) * anchura * altura; } return 0.0; } public static double procesarLinea(String linea) { StringTokenizer st = new StringTokenizer(linea, ","); String tipo = st.nextToken().trim(); double x = Double.parseDouble(st.nextToken().trim()); double y = Double.parseDouble(st.nextToken().trim()); double anchura = Double.parseDouble(st.nextToken().trim()); double altura = Double.parseDouble(st.nextToken().trim()); return calcularArea(tipo, anchura, altura); } public static double calcularAreaTotal(String nombreFichero) throws IOException { double areaTotal = 0.0; BufferedReader br = new BufferedReader(new FileReader(nombreFichero)); String linea; while ((linea = br.readLine()) != null) { linea = linea.trim(); if (!linea.isEmpty()) { areaTotal += procesarLinea(linea); } } br.close(); return areaTotal; } public static void main(String[] args) { String fichero = "figuras.txt"; try { double total = calcularAreaTotal(fichero); System.out.println("La suma total de las áreas es: " + total); } catch (IOException e) { System.err.println("Error en la lectura del fichero: " + e.getMessage()); } } } ```
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Ejercicio Recuperación - Problema 3. Procesamiento de nómin… · 2010 · Ejercicio Tercer Parcial - Problema 2. Persistencia de Prod… · 2010 ›