Ir ao conteúdo
  • Cadastre-se

C++ Calendario em C para exercicio


MadroxD

Posts recomendados

Estou desenvolvendo um calendario em C, só que estou tendo dificuldade na otimização da exibição do calendario em si (os numeros), o programa ja esta pronto só que como eu fui colocar o sistema de dias da semana nele. resumidamente preciso de ajuda para poder alterar o inicio do mes, no meu caso o mes sempre comeca no domingo.

OBS: Ja tenho o algoritmo que responde onde comeca o mes ex: 0= sábado | 6= sexta | 5=quinta | 4=quarta | 3=terca | 2= segunda | 1=domingo.

 

int mes29(int a){

    int i,j,mes[5][7],k=1;
    
        for(i=0; i<5; i++){
            for(j=0; j<7; j++){
                if(k<30){
                mes[j]=k++;
        }
        else
                mes[j]=0;        
            }
        }
        printf("Dom   Seg   Ter   Qua   Qui   Sex   Sab\n\n");
        for(i=0; i<5; i++){
            for(j=0; j<7; j++){
                printf("%3d   ",mes[j]);
            }
            printf("\n");
        }
}

 

 

 

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

O fórum sumiu com todos os [ i ] sem espaços do seu código, pois para o fórum isto é a tag para deixar o texto em itálico (note que o texto está em itálico a partir do primeiro lugar onde deveria será o [ i ]). Leia minha assinatura abaixo para ver como postar código corretamente no fórum, e evitar que o fórum faça alterações nele.

 

 

2 horas atrás, MadroxD disse:

OBS: Ja tenho o algoritmo que responde onde comeca o mes ex: 0= sábado | 6= sexta | 5=quinta | 4=quarta | 3=terca | 2= segunda | 1=domingo.

Onde está? É esse valor que vem como parâmetro na variável int a?

 

Se sim, poderia mudar esse if:

if(k<30){

para

if(k<30 && (i*j + j + 1) >= a){

Mas antes precisa fazer 7=sábado ( if (a == 0) a=7; ).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@isrnick  ja te agradeço pela atenção.

 

Esse sábado n tem como alterar porque segundo equação o final da operacao correspondente a sábado seria o 0 mesmo.

 

vou deixar o codigo completo para melhorar a visualização.

Codigo do calendario:

CALENDARIO.txt

 

Codigo para saber o dia da semana:

 

como-descobrir-o-dia-da-semana.txt

Link para o comentário
Compartilhar em outros sites

Seu programa usa várias funções repetidas quando poderia usar apenas uma:

 

int mes(int a, int ndias) {
    int i, j, mes[5][7], k = 1;
    
    if (a == 0) a = 7;
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 7; j++) {
            if(k < ndias + 1 && (i*7 + j + 1) >= a){
                mes[i][j] = k++;
            } else
                mes[i][j] = 0;
        }
    }
    printf("Dom   Seg   Ter   Qua   Qui   Sex   Sab\n\n");
    for (i = 0; i < 5; i++) {
        for (j = 0; j < 7; j++) {
            printf("%3d   ", mes[i][j]);
        }
        printf("\n");
    }

}

E poderia chamar a função assim:

if((m%2)&&(m<9)||(m%2==0)&&(m>=8))
{					
    mes(x, 31);
}

 

Edit: adicionei a correção ao if ...

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...