C/Visual C - Control errores meses y año bisiesto

 
Vista:
Imágen de perfil de isaac

Control errores meses y año bisiesto

Publicado por isaac (2 intervenciones) el 11/08/2015 14:02:43
Hola comunidad

Estoy haciendo un programa en c que: Introduciendo tu fecha de nacimiento en formato dd/mm/aaaa te diga si puedes votar. El programa en si lo veo claro, lo que no consigo ver es el control de errores ya que cada mes se compone de diferentes dias y hay años bisiestos. ¿Me podriáis ayudar con esto? Por cierto es mi primer post en la web, encantado de pertenecer a esta comunidad. Saludos cordiales

I_zack
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
Imágen de perfil de isaac

Control errores meses y año bisiesto

Publicado por isaac (2 intervenciones) el 11/08/2015 16:29:59
Esto es lo que tengo, y como lo estoy planteando. SE NOS PROHIBE HACER SWITCH
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/* Programa que verifique que eres mayor de edad para votar. Controla errores de los diferentes dias que compone el mes y años bisiestos */
#include <stdio.h>
#include <stdlib.h>
#define anyo_act 2015
 
int main (void){
 
int anyo_nac, mes_nac, dia_nac, resultado;
 
 
printf ("\nIntroduce los datos referentes a tu fecha de nacimiento\n");
printf ("\nIntroduce el mes que nacistes\n");
scanf ("%d",& mes_nac);
printf ("\nIntroduce el dia que nacistes\n");
scanf ("%d",& dia_nac);
//printf ("\nIntroduce el año que nacistes\n");
//scanf ("%d",& anyo_nac);
 
 
 
 
 
/* Inicio secuencia control de errores dias del mes */
 
 
if ( mes_nac= 1){
 
    do {
 
        printf ("ERROR Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
}
 
if ( mes_nac= 2){
 
    do {
 
        printf ("Este mes solo tiene 28 dias");
    }
 
    while ( dia_nac > 28);
    }
 
if ( mes_nac= 3){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
    }
 
if ( mes_nac= 4){
 
    do {
 
        printf ("Este mes solo tiene 30 dias");
    }
 
    while ( dia_nac > 30);
    }
 
if ( mes_nac= 5){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
 
    }
if ( mes_nac= 6){
 
    do {
 
        printf ("Este mes solo tiene 30 dias");
    }
 
    while ( dia_nac > 30);
 
    }
if ( mes_nac= 7){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
 
    while ( dia_nac > 31);
        }
if ( mes_nac= 8){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
    }
if ( mes_nac= 9){
 
    do {
 
        printf ("Este mes solo tiene 30 dias");
    }
 
    while ( dia_nac > 30);
 
}
 
if ( mes_nac= 10){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
    }
 
if ( mes_nac= 11){
 
    do {
 
        printf ("Este mes solo tiene 30 dias");
    }
 
    while ( dia_nac > 30);
}
 
if ( mes_nac= 12){
 
    do {
 
        printf ("Este mes solo tiene 31 dias");
    }
 
    while ( dia_nac > 31);
}
 
printf ("\nIntroduce el año que nacistes\n");
scanf ("%d",& anyo_nac);
 
/* Fin secuencia control de errores */
 
return 0;
}
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
sin imagen de perfil
Val: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Control errores meses y año bisiesto

Publicado por aguml (272 intervenciones) el 22/08/2015 03:27:14
No termino de ver claro lo que quieres hacer pero para saber si el valor de días es correcto seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (dia_nac < 1)
   printf ("error");
else
   switch (mes_nac){
      case 1: case 3: case 5: case 7: case 8: case 10: case 12:
         if(dia_nac > 31)
            printf ("error");
         break;
      case 4: case 6: case 9: case 11:
         if(dia_nac > 30)
            printf ("error");
         break;
      case 2:
         if(anio_nac % 4 == 0)
            if(dia_nac > 29)
               printf("error");
         else
             if (dia_nac > 28)
                printf ("error");
   }

Estoy con un móvil y se puede mejorar más pero me duelen ya los dedos jajaja.
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