Ir ao conteúdo
  • Cadastre-se

davi pavezi wilke

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por davi pavezi wilke

  1. pessoal, sou universitário, e esse trabalho é para ajudar na avaliação final, eu fiz ele, só que não esta dando certo:

     

    1- quando mostra os meses na tela, janeiro sempre pula um dia

    2- contador de ano bissexto não consegui arrumar

     

    alguem pode me ajudar a arrumar o código?

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    #define LINHAS 5
    #define COLUNAS 7
    
    
    void imprimir_dia_semana(int dia){
    	
    	switch(dia){
    		case 1:
    			printf("Dom");
    			break;
    		case 2:
    			printf("Seg");
    			break;
    		case 3:
    			printf("Ter");
    			break;
    		case 4:
    			printf("Qua");
    			break;
    		case 5:
    			printf("Qui");
    			break;
    		case 6:
    			printf("Sex");
    			break;
    		case 7:
    			printf("Sab");
    			break;
    		default:
    			printf("Impossivel imprimir.\n");
    	}
    }
    
    void imprimir_mes(int mes){
    	switch(mes){
    		case 1:
    			printf("\tJaneiro\n\n");
    			break;
    		case 2:
    			printf("\tFevereiro\n\n");
    			break;
    		case 3:
    			printf("\tMarco\n\n");
    			break;
    		case 4:
    			printf("\tAbril\n\n");
    			break;
    		case 5:
    			printf("\tMaio\n\n");
    			break;
    		case 6:
    			printf("\tJunho\n\n");
    			break;
    		case 7:
    			printf("\tJulho\n\n");
    			break;
    		case 8:
    			printf("\tAgosto\n\n");
    			break;
    		case 9:
    			printf("\tSetembro\n\n");
    			break;
    		case 10:
    			printf("\tOutubro\n\n");
    			break;
    		case 11:
    			printf("\tNovembro\n\n");
    			break;
    		case 12:
    			printf("\tDezembro\n\n");
    			break;
    		default:
    			printf("Numero invalido!\n");	
    	}
    }
    
    
    void calcular_dia_semana(int* dia_semana,int ano,int* bisexto){
    	int mes_atual,ano_atual,dia,flag = 0;
    	(*dia_semana) = 1;
    	*bisexto = 0;
    	
    	for(ano_atual = 1; ano_atual < ano;ano_atual ++){
    		*bisexto = *bisexto + 1;
    		
    		for(mes_atual = 1;mes_atual <= 12;mes_atual++){
    			for(dia = 1;dia <32;dia++){
    			
    				if(mes_atual < 8 && mes_atual % 2 != 0 || mes_atual >= 8 && mes_atual % 2 == 0){
    					if(dia == 32){
    						break;
    					}
    				}
    				else{
    					if(mes_atual == 2){
    						if( *bisexto == 4 ){
    							if(dia > 29){
    								*bisexto = 0;
    								break;
    							}
    						}
    						else{
    							if(dia > 28){
    								break;
    							}
    						}
    					}
    					
    					if(dia == 31){
    						break;
    					}
    				}
    				flag++;
    				
    				if( (*dia_semana) < 7 ){
    					(*dia_semana) = (*dia_semana) + 1;
    				}
    				else{
    					(*dia_semana) = 1;
    				}
    			
    			}	
    		}	
    	}
    	
    	*bisexto = *bisexto + 1;
    	
    	printf("Rodei %d vezes\n",flag);
    	imprimir_dia_semana(*dia_semana);
    	printf("\n");
    	
    }
    
    void exibir_calendario(int dia_semana,int ano,int bisexto){
    	int i,j,mes,dia = 1,flag = 1,dia_semana_atual = dia_semana;
    	
    	
    	for(mes = 1;mes <= 12;mes ++ ){
    		
    		imprimir_mes(mes);
    		
    		for(i = 1;i <= COLUNAS;i ++){
    			imprimir_dia_semana(i);
    		}
    	
    		printf("\n");
    	
    		for(i = 0;i < LINHAS;i ++){
    			for(j = 0;j < COLUNAS;j ++){
    				
    					//se é a primeira linha e o flag é menor que o dia da semana
    				if(i == 0 && flag < dia_semana ){
    					printf("  |");
    					flag++;
    					j = -1;
    					continue;
    				}
    				
    				if( j == (7 - dia_semana) ){
    					printf("\n");
    				}
    				if( dia < 9)
    				 printf("%d  ",dia);
    				else
    				 printf("%d ",dia);
    				
    				dia++;
    			
    				if(mes < 8 && mes % 2 != 0 || mes >= 8 && mes %2 == 0){
    					if(dia == 32){
    						break;
    					}
    				}
    				else{
    					if(mes == 2){
    						if(bisexto){
    							if(dia > 29){
    								flag = 0;
    								dia_semana = dia_semana_atual; 
    								bisexto = 0;
    								break;
    							}
    						}else{
    							if(dia > 29){
    								flag = 0;
    								dia = 1;
    								dia_semana = dia_semana_atual;
    								break;
    							}
    						}
    					}
    					
    					if(dia == 31){
    						break;
    					}
    				}
    				
    				//incrementando dia da semana
    				if( (dia_semana_atual) < 7 ){
    					dia_semana_atual++;
    				}
    				else{
    					(dia_semana_atual) = 1;
    				}
    			
    			}
    		}
    		printf("\n\n");
    		
    		flag = 0;
    		dia = 1;
    		dia_semana = dia_semana_atual; 
    	}
    	
    }
    
    
    main(){
    	int dia_semana,ano,bisexto;//1 = domingo   2 = segunda ...
    	
    	printf("Ano: ");
    	scanf("%d",&ano);
    	
    	calcular_dia_semana(&dia_semana,ano,&bisexto);
    	
    	if(bisexto == 4)
    	 bisexto = 1;
    	else
    	 bisexto = 0;
    	
    	exibir_calendario(dia_semana,ano,bisexto);
    	
    	return 0;
    	
    }
    

    pedidos urgentes e sinceros de um acadêmico que não quer rodar mais uma vez nessa cadeira, valeu!

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!