Cita:
Iniciado por HackID1 Gracias magnifica solución un poco avanzada para lo que aún estoy dando en C . :)
Pero vienen bien para ir viendo nuevas funciones en los códigos.
Al final conseguí la solución de esta forma un poco más simple.
Código C:
Ver original#include <stdio.h>
int main() {
char *meses[] = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
char mes[12];
int dias_meses[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int i ;
printf("Introduzca el nombre del mes: ");
for (i=0; i<12; i++) {
/*comparo la respuesta sea igual a 0, es decir que existe el mes introducido*/
if ( strcmp ( mes
, meses
[i
] ) == 0 ) break;
}
/*imprimo el mes, de acuerdo a la posicion donde se encuentra [i] */
printf("Mes %s tiene %d dias.", mes
, dias_meses
[i
] );
return (0);
}
Saludos y Gracias por tu aporte
eduar2083
Una pregunta el return (0) es obligatorio en este programa, es que veo muchas veces lo ponen y otras no.
Si puedes responderme lo agradezco, igual buscare info sobre esto.
Tal como lo tienes, y como ya te indiqué anteriormente, si introduces un mes erróneo, ejemplo emmero, te devolverá el printf "basura" en el número de días. Relee lo que te puse anteriormente respecto a lo fundamental del uso del if, tal como te indicó
eferion:
Código C++:
Ver original#include <stdio.h>
#include <string.h>
int main() {
char *meses[] = {"enero", "febrero", "marzo", "abril", "mayo", "junio",
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};
char mes[12];
int dias_meses[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int i ;
printf("Introduzca el nombre del mes: ");
for (i=0; i<12; i++) {
if ( strcmp ( mes
, meses
[i
] ) == 0 ) break;
}
/******* ESTO ES FUNDAMENTAL **/
if ( i == 12 )
puts ( "Mes incorrecto" ) ; else
printf("Mes %s tiene %d dias.", mes
, dias_meses
[i
] ); return (0);
}
Y respecto a main, por cuestiones del estándar del C ha de ser una función de tipo "int" con lo que lo correcto es que devuelva un int. Se suele indicar 0 tipo "return 0" , aunque si tienes varias "salidas " del programa yo acostumbro a ir poniendo return 1, etc ( revisa el código que te pasé con el array bidimensional para que lo veas ) así según el valor del return que devuelve al final de ejecutarse el código sé por dónde ha salida. Unido a unos cuantos printf me evita la mayor parte de las veces el usar el debuger. Aunque a fuerza de ser puristas, tal como te indicó
Profesor_Falken, lo más correcto sería retornar la constante EXIT_SUCCESS, definida en stdlib.h.
¡¡¡Saluditos!!!