Vamos resolver usando apenas SWITCH e cases acumulados.
Exercício:
Crie um programa em C que receba um inteiro, de 1 até 12, representando os meses do ano e retorne o número de dias do mês.
Use switch e não use break.
Use acúmulo de case e suponha que fevereiro tenha sempre 28 dias.
Como obter certificação de programação em C
- Leia este conteúdo no seu computador: Apostila C Progressivo
Como programar: aplicativo que diz quantos dias um mês possui em C
Caso seja o mês 4, 6, 9 ou 11, é subtraído 1 da variável 'dias' e o programa informa que esses meses possuem 30 dias.
Caso seja o mês 2, é subtraído 2 de 'dias', ficando 28 dias para o mês de fevereiro.
Caso não seja nenhum desses meses, não cai no switch, então continua com 31 dias (que são os meses 1, 3, 5, 7, 8, 10 e 12).
Assim, nosso código C fica:
#include <stdio.h> int main() { int mes, dias=31; printf("Digite o mes [1-12]: "); scanf("%d", &mes); if(mes>12 || mes<1) printf("Mes invalido"); else switch( mes ) { // fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case case 2: dias -=2; //meses que possuem 30 dias: só subtraímos 1 dia case 4: case 6: case 9: case 11: dias--; } printf("O mes %d possui %d dias", mes, dias); }
11 comentários:
Olá!
Antes de mais nada, gostaria de parabenizar pelo excelente trabalho que estão fazendo.
Fiquei com uma dúvida, por o C não subtraiu a variável dia duas vezes?
Como o C se achou sem o break?
Agradeço desde já.
Olá
Fiquei surpreso com a solução do exercício. Não ficou claro na aula que podia por uma única instrução para vários cases em cascata.
Entendi que cada case seria executado sem o break;, mas não que podia juntar todos os cases como um só!
To gostando muito do curso, Parabens e Obrigado.
Esse exercício eu o modifiquei porque achei mais interessante e fica a dica pra quem quiser tentar ao inves de somente dizer quantos dias tem o mes, mandar ele calcular qual o numero do dia durante o ano. 10/02 somaria 31 dias de janeiro + 10 de fevereiro chegando 10/02 sendo o 41º dia do ano e por ae vai.
Por que a resposta do ultimo exercicio não tem default?
Estou gostando muito do curso!
Bom dia!
Ainda estou aprendendo.
O curso de vcs é ótimo, a lógica dos exercícios resolvidos super simples.
Nesse exercício do Switch quando digito um numero de mês invalido ele aparece a mensagem " mês invalido mês 13 possui 31 dias".Fiquei com duvida no default porque nesse exercício você não colocou?
Obrigado pela atenção.
parabéns pelo curso excente!
#include
//2. Faça uma função que receba um número inteiro de 1 a 12 e imprima em tela o mês e a sua quantidade de dias
//de acordo com o número digitado pelo usuário. Exemplo: Entrada = 4. Saída = abril.
void imprimaMes_1(){
printf("[Janeiro] //");
}
void imprimaMes_2(){
printf("[Fevereiro] //");
}
void imprimaMes_3(){
printf("[Marco ] //");
}
void imprimaMes_4(){
printf("[Abril] //");
}
void imprimaMes_5(){
printf("[Maio] //");
}
void imprimaMes_6(){
printf("[Junho] //");
}
void imprimaMes_7(){
printf("[Julho] //");
}
void imprimaMes_8(){
printf("[Agosto] //");
}
void imprimaMes_9(){
printf("[Setembro] //");
}
void imprimaMes_10(){
printf("[Outubro] //");
}
void imprimaMes_11(){
printf("[Novembro] //");
}
void imprimaMes_12(){
printf("[Dezembro] //");
}
void Invalidomes(){
//if(mes>12 || mes<1)
printf("ERRO: MES INVALIDO:\n\n //");
// return main;
}
int main()
{
int mes,
dias=31;
printf("Digite o mes [1-12]: ");
scanf("%d", &mes);
switch( mes )
{
case 1:
imprimaMes_1();
break;
// fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case
case 2:
imprimaMes_2();
dias -=3;
break;
case 3:
imprimaMes_3();
break;
//meses que possuem 30 dias: só subtraímos 1 dia
case 4:
imprimaMes_4();
dias--;
break;
case 5:
imprimaMes_5();
break;
case 6:
imprimaMes_6();
dias--;
break;
case 7:
imprimaMes_7();
break;
case 8:
imprimaMes_8();
break;
case 9:
imprimaMes_9();
dias--;
break;
case 11:
imprimaMes_10();
dias--;
break;
case 12:
imprimaMes_3();
break;
default:
Invalidomes();
break;
}
printf("O mes %d possui %d dias", mes, dias);
}
#include
//2. Faça uma função que receba um número inteiro de 1 a 12 e imprima em tela o mês e a sua quantidade de dias
//de acordo com o número digitado pelo usuário. Exemplo: Entrada = 4. Saída = abril.
void imprimaMes_1(){
printf("[Janeiro] //");
}
void imprimaMes_2(){
printf("[Fevereiro] //");
}
void imprimaMes_3(){
printf("[Marco ] //");
}
void imprimaMes_4(){
printf("[Abril] //");
}
void imprimaMes_5(){
printf("[Maio] //");
}
void imprimaMes_6(){
printf("[Junho] //");
}
void imprimaMes_7(){
printf("[Julho] //");
}
void imprimaMes_8(){
printf("[Agosto] //");
}
void imprimaMes_9(){
printf("[Setembro] //");
}
void imprimaMes_10(){
printf("[Outubro] //");
}
void imprimaMes_11(){
printf("[Novembro] //");
}
void imprimaMes_12(){
printf("[Dezembro] //");
}
void Invalidomes(){
//if(mes>12 || mes<1)
printf("ERRO: MES INVALIDO:\n\n //");
// return main;
}
int main()
{
int mes,
dias=31;
printf("Digite o mes [1-12]: ");
scanf("%d", &mes);
switch( mes )
{
case 1:
imprimaMes_1();
break;
// fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case
case 2:
imprimaMes_2();
dias -=3;
break;
case 3:
imprimaMes_3();
break;
//meses que possuem 30 dias: só subtraímos 1 dia
case 4:
imprimaMes_4();
dias--;
break;
case 5:
imprimaMes_5();
break;
case 6:
imprimaMes_6();
dias--;
break;
case 7:
imprimaMes_7();
break;
case 8:
imprimaMes_8();
break;
case 9:
imprimaMes_9();
dias--;
break;
case 11:
imprimaMes_10();
dias--;
break;
case 12:
imprimaMes_3();
break;
default:
Invalidomes();
break;
}
printf("O mes %d possui %d dias", mes, dias);
}
#include
//2. Faça uma função que receba um número inteiro de 1 a 12 e imprima em tela o mês e a sua quantidade de dias
//de acordo com o número digitado pelo usuário. Exemplo: Entrada = 4. Saída = abril.
void imprimaMes_1(){
printf("[Janeiro] //");
}
void imprimaMes_2(){
printf("[Fevereiro] //");
}
void imprimaMes_3(){
printf("[Marco ] //");
}
void imprimaMes_4(){
printf("[Abril] //");
}
void imprimaMes_5(){
printf("[Maio] //");
}
void imprimaMes_6(){
printf("[Junho] //");
}
void imprimaMes_7(){
printf("[Julho] //");
}
void imprimaMes_8(){
printf("[Agosto] //");
}
void imprimaMes_9(){
printf("[Setembro] //");
}
void imprimaMes_10(){
printf("[Outubro] //");
}
void imprimaMes_11(){
printf("[Novembro] //");
}
void imprimaMes_12(){
printf("[Dezembro] //");
}
void Invalidomes(){
//if(mes>12 || mes<1)
printf("ERRO: MES INVALIDO:\n\n //");
// return main;
}
int main()
{
int mes,
dias=31;
printf("Digite o mes [1-12]: ");
scanf("%d", &mes);
switch( mes )
{
case 1:
imprimaMes_1();
break;
// fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case
case 2:
imprimaMes_2();
dias -=3;
break;
case 3:
imprimaMes_3();
break;
//meses que possuem 30 dias: só subtraímos 1 dia
case 4:
imprimaMes_4();
dias--;
break;
case 5:
imprimaMes_5();
break;
case 6:
imprimaMes_6();
dias--;
break;
case 7:
imprimaMes_7();
break;
case 8:
imprimaMes_8();
break;
case 9:
imprimaMes_9();
dias--;
break;
case 11:
imprimaMes_10();
dias--;
break;
case 12:
imprimaMes_3();
break;
default:
Invalidomes();
break;
}
printf("O mes %d possui %d dias", mes, dias);
}
#include
//2. Faça uma função que receba um número inteiro de 1 a 12 e imprima em tela o mês e a sua quantidade de dias
//de acordo com o número digitado pelo usuário. Exemplo: Entrada = 4. Saída = abril.
void imprimaMes_1(){
printf("[Janeiro] //");
}
void imprimaMes_2(){
printf("[Fevereiro] //");
}
void imprimaMes_3(){
printf("[Marco ] //");
}
void imprimaMes_4(){
printf("[Abril] //");
}
void imprimaMes_5(){
printf("[Maio] //");
}
void imprimaMes_6(){
printf("[Junho] //");
}
void imprimaMes_7(){
printf("[Julho] //");
}
void imprimaMes_8(){
printf("[Agosto] //");
}
void imprimaMes_9(){
printf("[Setembro] //");
}
void imprimaMes_10(){
printf("[Outubro] //");
}
void imprimaMes_11(){
printf("[Novembro] //");
}
void imprimaMes_12(){
printf("[Dezembro] //");
}
void Invalidomes(){
//if(mes>12 || mes<1)
printf("ERRO: MES INVALIDO:\n\n //");
// return main;
}
int main()
{
int mes,
dias=31;
printf("Digite o mes [1-12]: ");
scanf("%d", &mes);
switch( mes )
{
case 1:
imprimaMes_1();
break;
// fevereiro: subtraímos 2 dias aqui e 1 dia no próximo case
case 2:
imprimaMes_2();
dias -=3;
break;
case 3:
imprimaMes_3();
break;
//meses que possuem 30 dias: só subtraímos 1 dia
case 4:
imprimaMes_4();
dias--;
break;
case 5:
imprimaMes_5();
break;
case 6:
imprimaMes_6();
dias--;
break;
case 7:
imprimaMes_7();
break;
case 8:
imprimaMes_8();
break;
case 9:
imprimaMes_9();
dias--;
break;
case 11:
imprimaMes_10();
dias--;
break;
case 12:
imprimaMes_3();
break;
default:
Invalidomes();
break;
}
printf("O mes %d possui %d dias", mes, dias);
}
Parabéns pelo trabalho de vocês. Como ficaria esse código, substituindo o switch pelo elso if? Obrigado
Parabéns pelo trabalho de vocês. Como ficaria esse código substituindo o switch pelo else if?
Postar um comentário