Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programa 8

1,372 views

Published on

  • Be the first to comment

  • Be the first to like this

Programa 8

  1. 1. Programa 8 a) Planteamiento del problemaEscribe un programa que lea tres números dia, mes y anno que representanuna fecha (día, mes y año) y calcule el día de la semana correspondienteusando la congruencia de Zeller:diasem= (700 + (26mes - 2) DIV 10 + dia + a + a DIV 4 + b DIV 4 – 2b) MOD7Donde los valores son:Si mes<=2 Si mes>=3mes mes+10anno-1mes-2a anno mod 100 anno mod 100b anno div 100 anno div 100El valor de la variable diaseman estará entre 0 y 6 (0 =domingo,1= lunes,3=martes, 4=miércoles, 5=jueves, 6= viernes), imprima la fecha de entradade datos y sustituya el valor ordinal obtenido por el dia en letras.Verifique el siguiente código y complemente su ejercicio, realice pruebaspara asegurarse que su solución es correcta.public static void main(String[] args) {int dia=Integer.parseInt(JOptionPane.showInputDialog(null, "dia ennumero"));int mes=Integer.parseInt(JOptionPane.showInputDialog(null, "mes ennumero"));int anno=Integer.parseInt(JOptionPane.showInputDialog(null, "año ennumero"));if (mes <= 2){mes = mes + 10;anno = anno - 1;}else{mes = mes - 2;}int a= anno % 100;int b= anno / 100;int diaordinal =(700 +((26 * mes -2) / 10) + dia + a+ a/ 4 + b/ 4 - 2 * b) % 7;JOptionPane.showMessageDialog(null,"dia ordinal obtenido"+diaordinal);}Recordatorio: mod en java es %, y el div en java es cociente entero.Verifique que sucede cuando el año no fue bisiesto, como soluciona estecaso.
  2. 2. Nota los datos de entrada no pueden ser negativos ni tampoco sobrepasarel limite establecido de su representación.b) Análisis de datos (datos de: entrada / salida, condiciones y diccionario deDatos).Datos:DíaMesAño(Anio)ABDía OrdinalCondiciones:Si mes<=2 = mes = mes+10Si mes<=2 = año = año-1No mes<=2 = mes - mes-2A = (año) mod 100B = (año-A)/100Día ordinal = (700+((26*mes-2)/10)+dia+A+A/4+B/4-2*B) mod 7Diccionario de Datos:Día=Valor numérico introducido del día que se quiere conocer.Mes=Valor numérico introducido del mes que se quiere conocer.Año= Valor numérico Introducido del año que se quiere conocer.A=Residuo del Año introducido entre 100 necesario para poder calcular usando lacongruencia de ZellerB=La división entre el Año introducido entre 100 necesario para poder calcularusando la congruencia de ZellerDía Ordinal= El Día de la semana que se quiere conocer.
  3. 3. c) Diseño de solución (Diagrama de flujo usando el programa DFD)
  4. 4. d) Prueba de escritorio. Día Introducido = 18 Mes Introducido = 4 Año Introducido = 2012 SI (mes <= 2) mes = mes + 10; año = añoo - 1; else mes = mes – 2 diaordinal =(700 +((26 * mes -2) / 10) + dia + a+ a/ 4 + b/ 4 - 2 * b) % 7 = 3 switch (diaordinal) case 1: “Lunes” break; case 2: “Martes” break case 3: “Miercoles” break; case 4: "jueves" break case 5: "viernes" break case 6: "sabado" break case 7: “domingo" break diaordinal = 3: “Miercoles”
  5. 5. e) Programa fuente (codificación en java)package días;import javax.swing.*;public class Días { public static void main(String[] args) { int dia, mes, anio, a, b, diaordinal ; dia = Integer.parseInt(JOptionPane.showInputDialog(null, "dia en numero")); mes = Integer.parseInt(JOptionPane.showInputDialog(null, "mes en numero")); anio = Integer.parseInt(JOptionPane.showInputDialog(null, "año en numero")); if (mes <= 2) { mes = mes + 10; anio = anio - 1; } else { mes = mes - 2; } a= anio % 100; b= anio / 100; diaordinal =(700 +((26 * mes -2) / 10) + dia + a+ a/ 4 + b/ 4 - 2 * b) % 7; JOptionPane.showMessageDialog(null,diaordinal); switch (diaordinal){ case 1: { JOptionPane.showMessageDialog(null,"Lunes"); break; } case 2: { JOptionPane.showMessageDialog(null,"Martes"); break; } case 3: { JOptionPane.showMessageDialog(null,"Miercoles"); break; } case 4: { JOptionPane.showMessageDialog(null,"jueves"); break; } case 5: { JOptionPane.showMessageDialog(null,"viernes"); break; } case 6: { JOptionPane.showMessageDialog(null,"sabado"); break; } case 7: { JOptionPane.showMessageDialog(null,"domingo"); break; }
  6. 6. } }}f) Depuración.- La forma de comprobar que su programa es funcional seráimprimiendo sus pantallas de salida, las cuales deberán estar previamentediseñadas con presentación en su JOptionPane ver material de clases.
  7. 7. f) Conclusión de su práctica. Algoritmo de Feller para calcular un día de la semana Usar SWITCH y CASE Hacer un diagrama en el DFD Crear un Programa en Java Netbeans

×