Dev - C++ - busco ayuda para este programa

 
Vista:

busco ayuda para este programa

Publicado por pepe (1 intervención) el 11/01/2017 22:27:51
por favor necesito ayuda para este programa: aqui les dejo el enunciado:
Realiza un programa que recibiendo una cadena que tiene un formato de fecha dd/mm/aaaa, genere e imprima otra cadena de formato dd de nombre del mes de aaaa.Si recibe 05/01/2070 imprimirá 5 de Enero de 2070.
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: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

busco ayuda para este programa

Publicado por agustin (522 intervenciones) el 12/01/2017 08:57:31
Yo usaría strtok para obtener los diferentes tokens usando como carácter para separarlos la barra inclinada de la división.
Luego, simplemente usas un array de strings con los nombres de los meses en orden y dependiendo del número del mes le restas 1 y tienes el índice que apunta al nombre de ese mes.
Ya sólo te quedaría mostrar la string con los datos obtenidos.
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: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

busco ayuda para este programa

Publicado por agustin (522 intervenciones) el 12/01/2017 09:48:06
Algo asi:
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
#include  <stdio.h>
#include <string.h>
 
int main ()
{
	char meses[12][11]={"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
	char fecha [25];
	int dia, mes, anio;
	char *p;
	int contador,control;
 
	//Obtengo la fecha solicitandola al usuario
	printf  ("Introduce una fecha con formato \"dd/mm/aa\":\n");
	fgets (fecha, sizeof (fecha)-1,stdin);
 
	//La separo en sus tokens
	contador=0;
	p=strtok (fecha, "/");
	while (p !=NULL){
		contador++;
		switch (contador){
			case 1:
			control=dia=atoi(p);
			break;
 
			case 2:
			control=mes=atoi(p);
			break;
 
			case 3:
			control=anio=atoi(p);
			break;
		}
		if (control==0)
		    break;
		p=strtok (NULL,"/");
	}
 
	//Muestro la fecha con el nuevo formato
	if (contador==3 && control != 0 && (mes >= 1 && mes <= 12))
	    printf ("%2i de %s de %i",dia, meses [mes-1], anio);
	else
	    printf ("Formato de fecha incorrecto.");
 
	return 0;
}
Se podría usar time.h o comprobar a mano que los días se correspondan con el mes y si es bisiesto.
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: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

busco ayuda para este programa

Publicado por agustin (522 intervenciones) el 12/01/2017 10:18:28
Podría quedar asi:
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
#include  <stdio.h>
#include <string.h>
 
int main ()
{
	char meses[12][11]={"enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"};
	char fecha [25];
	int dia, mes, anio;
	char *p;
	int contador,control;
	int dmax=0;
 
	//Obtengo la fecha solicitandola al usuario
	printf  ("Introduce una fecha con formato \"dd/mm/aa\":\n");
	fgets (fecha, sizeof (fecha)-1,stdin);
 
	//La separo en sus tokens
	contador=0;
	p=strtok (fecha, "/");
	while (p !=NULL){
		contador++;
		switch (contador){
			case 1:
			control=dia=atoi(p);
			break;
 
			case 2:
			control=mes=atoi(p);
			break;
 
			case 3:
			control=anio=atoi(p);
			break;
		}
		if (control==0)
		    break;
		p=strtok (NULL,"/");
	}
 
	if (control != 0 && contador == 3){
		switch (mes){
			case 1: case 3: case 5: case 7: case 8: case 10: case 12:
			dmax=31;
			break;
 
			case 4: case 6: case 9: case 11:
			dmax=30;
			break;
 
			case 2:
			if (anio%4==0)
			    dmax=29;
			else
			    dmax=28;
			break;
		}
 
		//Muestro la fecha con el nuevo formato
		if (dmax > 0){
			if (dia > dmax)
		        printf ("Ese mes no tiene tantos dias");
		    else
		        printf ("%2i de %s de %i",dia, meses [mes-1], anio);
		}else{
			printf ("Mes incorrecto");
		}
	}else
	    printf ("Formato de fecha incorrecto.");
 
	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