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ó!
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.
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?
#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] //"); }
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; }
#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] //"); }
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; }
#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] //"); }
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; }
#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] //"); }
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);
}
30 de outubro de 2022 às 14:24
[Image]Vamos criar agora um programa que pede o mês ao usuário, e retorna quantos dias esse mês possui.
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
postado por Programação Progressiva às 15:51 em 24 de fev. de 2013
10 Comentários
Fechar esta janela Ir para formulário de comentárioOlá!
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á.
18 de julho de 2014 às 16:47
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ó!
7 de outubro de 2014 às 05:44
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.
13 de outubro de 2014 às 06:57
putz, o ultimo exercicio me surpreendeu, a lógica super limpa e simples kkkkkkkk
maravilhoso esse trabalho de c, estou reforçando bastante o que tenho visto na faculdade de computação.
13 de abril de 2015 às 21:32
Por que a resposta do ultimo exercicio não tem default?
Estou gostando muito do curso!
15 de setembro de 2015 às 07:51
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!
15 de setembro de 2015 às 08:08
#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);
}
30 de outubro de 2022 às 14:22
#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);
}
30 de outubro de 2022 às 14:22
#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);
}
30 de outubro de 2022 às 14:23
#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);
}
30 de outubro de 2022 às 14:24