Ir ao conteúdo
  • Cadastre-se
MadroxD

C++ Calendario em C para exercicio

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim mas pode converter 0 para 7 fazendo um simples:

if (a == 0){ a=7; }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick  Obrigado dnv pela atenção.

 

fiz os passos para testar mas n saiu como o esperado

resultado.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
if(k<30 && (i*7 + j + 1) >= a){

Corrigi...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@isrnick  deu CERTINHO !! muito obrigado amigão, tudo de bom

  • Curtir 1

Compartilhar este post


Link para o post
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 ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!