Jump to content
1Skull

Estrutura para os meses do ano

Recommended Posts

1Skull

Bom dia, estou a fazer um projecto do final de modulo :cheesygrin:, mas tenho um problema.

Quando nós escrevemos 1 queria que aparecesse o nome do mês, e assim sucessivamente. Gostava de saber se me poderiam ajudar  🤔.

Se der para fazer uma estrutura agradecia.  :)

Obrigado desde já :wallbash:

Share this post


Link to post
Share on other sites
amando96

> Ler valor

> Switch case

switch (variavel)

case 1:

mes = "janeiro";

break;

case 2:

mes = "fevereiro";

break;

...

default:

mes = "Esse mês não existe!";

break;

Acabar o switch

printf("%s",mes);

A do array foi bem pensada  :)


FACEPALMMOVLW PALMMOVWF FACE

Share this post


Link to post
Share on other sites
Localhost

Podes ter um vector de strings e depois indexar a posição inserida pelo utilizador (sem esquecer que a indexação começa no 0).

char months[][30] = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};

scanf ("%d", &n);
printf ("%s\n", months[n - 1]);


here since 2009

Share this post


Link to post
Share on other sites
1Skull

Nao sei bem como explicar, eu preciso dos meses, porque preciso de datas de nascimento, mas eu tenho de usar funções e como nao domino bem gostaria que me explica-se melhor.

Desculpe a minha ignorancia

Share this post


Link to post
Share on other sites
Localhost

Passei agora por momentos difíceis para pôr o código a funcionar lol. Já tens a função corrigida e testada no post anterior.


here since 2009

Share this post


Link to post
Share on other sites
Baderous

Podes ter um vector de strings e depois indexar a posição inserida pelo utilizador (sem esquecer que a indexação começa no 0).

char months[][30] = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};

scanf ("%d", &n);
months[n - 1][strlen (months[n - 1])] = '\0';

printf ("%s\n", months[n - 1]);

Não é preciso esse malabarismo todo, basta um array de strings, elas são inicializadas com o '\0' no fim de cada uma.

#include <stdio.h>

int main(void) {
        int n;
        char* months[] = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};
        scanf("%d",&n);
        printf("%s\n",months[n]);
        return 0;
}

Share this post


Link to post
Share on other sites
Localhost

Realmente fui um bocado redundante. Se utilizei a função strlen e ela retornou tudo correctamente é porque já existia lá o \0.


here since 2009

Share this post


Link to post
Share on other sites
Cronometro

Não é preciso esse malabarismo todo, basta um array de strings, elas são inicializadas com o '\0' no fim de cada uma.

#include <stdio.h>

int main(void) {
        int n;
        char* months[] = {"janeiro", "fevereiro", "março", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};
        scanf("%d",&n);
        printf("%s\n",months[n]);
        return 0;
}

printf("%s\n",months[n]);

ou

printf("%s\n",months[n-1]);

?


Software is like sex: It’s better when it’s free.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.