Hola buenos días, tengo un ejercicio que hacer en dos partes, una usando if/switch y otra sin ellos, es decir, usando una matriz de chars.
El ejercicio dice tal que así (segunda parte):
Haz un programa que muestre el nombre del día de la semana a partir de su código numérico ( 1=lunes, 2=martes....7=domingo), pero sin usar ningún if/switch!
De buenas a primeras, se que habría que hacer algo tal que así:
char frases[4][15] = {
"Primera frase",
"Segunda frase",
"Hola mundo",
"Y para acabar"
};
¿Pero luego cómo hago para que el usuario escoja un numero y se muestre el día de la semana que corresponde?
Usando un switch sería la mar de fácil:
#include <stdio.h>
#include <stdlib.h>
int main() {
int dia;
printf("¿Que numero de la semana quieres? \n");
scanf("%d",&dia);
switch(dia) {
case 1 :
printf("lunes \n");
break;
case 2 :
printf("martes \n");
break;
case 3 :
printf("miércoles \n");
break;
case 4 :
printf("jueves \n");
break;
case 5 :
printf("viernes \n");
break;
case 6 :
printf("sábado \n");
break;
case 7 :
printf("domingo \n");
break;
default :
printf("No existe \n");
}
system("PAUSE");
return 0;
}
Espero que me podáis echar un cable.
Un saludo :D
char frases[4][15] = {
"Primera frase",
"Segunda frase",
"Hola mundo",
"Y para acabar"
};
Ibas bien, crea una matriz con todos los días de la semana.
Después le pides el número y muestras el contenido de esa posición:
scanf("%d",&dia);
printf(frase[dia]);
O si te resulta más intuitivo:
scanf("%d",&dia);
printf("%s",frase[dia]);
Usando tu primer planteamiento tienes el problema hecho:
char dias_semana[7][10] = {
"Lunes",
"Martes",
"Miercoles",
"Jueves",
"Viernes",
"Sabado",
"Domingo" };
Si tienes una matriz con los días de la semana... puedes usar el número pedido al usuario para acceder a la matriz y recuperar el nombre correspondiente:
printf( "%s\n", dias_semana[ dia ] );
Lo único que tienes que tener presente es que los índices de las matrices empiezan en 0.
Hola amchacon y eferion,
¡Muchas gracias por vuestra ayuda!
Ya me funciona el programa perfectamente, visto así, es mucho más fácil resolverlo con una matriz de chars que no con un switch jajaja
Una ultima cosilla, para que quede "mas lógico/normal", ¿no hay alguna forma que el 1 corresponda al lunes y no al 0 y así sucesivamente?
Un saludo :D
Puedes dejar vacío el primer espacio de la matriz
char dias_semana[][10] {
"", // Vacio
"Lunes",
...
Pero vete acostumbrando a lo de los índices empezando en 0 porque te vas a hartar a verlos. Es más cómodo adaptarse.
Cita de: kayron8 en 13 Marzo 2014, 12:14 PMUna ultima cosilla, para que quede "mas lógico/normal", ¿no hay alguna forma que el 1 corresponda al lunes y no al 0 y así sucesivamente?
Al número que te de el usuario, restale 1 ;)
Nuevamente, muchas gracias eferion.
Un saludo :D
hola kayron8 solo a título informativo, cuando tienes una serie de constantes a los cuales le asignas números enteros en especial positivos correlativos, puedes utilizar la enumeración:
enum DiasSemanas
{
Lunes = 1,
Marte,
Miercoles,
Jueves,
Viernes,
Sabado,
Domingo
};
mas info -> http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Estructuras_y_Uniones#Enumeraciones
pd: fui a la primera fuente lenguaje C de K&R, pero salía mucho mas enredado jajaa creo que aquí es más claro, y te ajusté la primera variable para que inicie en 1, como querías. saludos.
Cita de: Gh057 en 13 Marzo 2014, 12:42 PM
hola kayron8 solo a título informativo, cuando tienes una serie de constantes a los cuales le asignas números enteros en especial positivos correlativos, puedes utilizar la enumeración:
enum DiasSemanas
{
Lunes = 1,
Marte,
Miercoles,
Jueves,
Viernes,
Sabado,
Domingo
};
mas info -> http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Estructuras_y_Uniones#Enumeraciones
pd: fui a la primera fuente lenguaje C de K&R, pero salía mucho mas enredado jajaa creo que aquí es más claro, y te ajusté la primera variable para que inicie en 1, como querías. saludos.
Lo que el quiere son strings... no enumerados XD
jajaj si eferion por eso puse a título informativo ;D saludos!