Ir para conteúdo
Fórum Script Brasil

Elton Carlos

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Elton Carlos

Elton Carlos's Achievements

0

Reputação

  1. Olá pessoal estou com dificuldades no meu código de como gerar duas ou mais matrizes na mesma linha, é um calendario e deve sair o formato como um calendario. Por favor me ajudem abaixo mando o código que está gerando o calendario de forma linear com algins erros. #include<conio.h> #include<stdio.h> #include<stdlib.h> #include<dos.h> #include<math.h> #define M_LINHA 6 #define M_COLUNA 7 typedef int vetor[42]; typedef char v_sem[6][8]; typedef int v_mes[M_LINHA][M_COLUNA]; int le_ano() { int ano; printf("INFORME UM ANO \t"); scanf("%d", &ano); return(ano); } int le_mes() { int mes; printf("DIGITE UM MES QUALQUER\t\n\n"); scanf("%d", &mes); return (mes); } int calcula_dia(int ano, int mes) //esta funçao calcula o dia que começa a semana { int a,y,m, dia=1,d; a = (14-mes)/12; y = ano - a; m = mes + 12*a - 2; int kl = (1 + y + y/4 - (y/100) + (y/400) + ((31 * m)/12)); d = kl % 7; return(d); } //carrega o vetor para cabeçalho dos dias da semana. void semana(v_sem semana_1) { strcpy(semana_1[0],"DOM"); strcpy(semana_1[1],"SEG"); strcpy(semana_1[2],"TER"); strcpy(semana_1[3],"QUA"); strcpy(semana_1[4],"QUI"); strcpy(semana_1[5],"SEX"); strcpy(semana_1[6],"SAB"); } //mostra a o cabeçalho dos dias semana void mostra_semana(v_sem semana_1) { int i; for(i=0;i<7;i++) { printf("%0.5s ", semana_1); } printf("\n"); } //mostra o mes de 31 dias preenchendo a matriz com apenas 31 numeros void mes_completo_31(v_mes mes_1) { int count,count_2,count_3,k; //count - contador para linha, count_2 - contador para coluna, count_3 - contador para preencher a matriz k=1; // K recebera quant_dia para preencher a matriz. for(count=0;count<M_LINHA;count++) { for(count_2=0;count_2<M_COLUNA;count_2++) { mes_1[count][count_2]=k; k++; if (k==32) return; } } } void completo(v_mes mes_1, int ano, int mes) { int count,count_2,count_3,k=1, inicio=calcula_dia(ano,mes), COLUNA, valor_coluna=-1, valor_linha=0; //laço que imprime espaços em branco na tela conforme o valor calculado da função calcula_dia while (inicio!=0){ inicio--; printf(" "); } //for que controla as linhas da matriz do calendario for(count=0;count<M_LINHA;count++) { // verifica se é a primeira semana do calendario, se count é igual a zero então é a primeira semana if (count == 0) COLUNA = M_COLUNA - calcula_dia(ano,mes); else COLUNA = M_COLUNA; for(count_2=0; count_2< COLUNA; count_2++) { valor_coluna++; printf("%2d ", mes_1[valor_linha][valor_coluna]); k++; if (6==valor_coluna){ valor_coluna=0; valor_linha++; } if (k==30) return; } printf("\n\n"); } } //Esta função imprimi em arquivo .txt void imprimi_txt(v_mes mes_1, int ano, int mes,FILE *fp) { int count,count_2,count_3,k=1, inicio=calcula_dia(ano,mes), COLUNA, valor_coluna=-1, valor_linha=0; fp = fopen("calendario.txt","w"); // Verificando se houve erros na associação com o arquivo. if (fp==NULL) { // Interrompe programa. puts("não foi possivel abrir o arquivo solicitado.\n"); exit(EXIT_FAILURE); } //laço que imprime espaços em branco na tela conforme o valor calculado da função calcula_dia while (inicio!=0){ inicio--; printf(" "); } //for que controla as linhas da matriz do calendario for(count=0;count<M_LINHA;count++) { // verifica se é a primeira semana do calendario, se count é igual a zero então é a primeira semana if (count == 0) COLUNA = M_COLUNA - calcula_dia(ano,mes); else COLUNA = M_COLUNA; for(count_2=0; count_2< COLUNA; count_2++) { valor_coluna++; //fseek (fp,0,SEEK_END); fprintf(fp,"%d",&mes_1[valor_coluna][valor_linha]); k++; if (6==valor_coluna){ valor_coluna=0; valor_linha++; } if (k==30) return; } printf("\n\n"); } fclose(fp); } // Esta função imprimi o calendario interio. void imprime_ano(int ano, v_sem semana_1, FILE *fp){ v_mes mes_1; char nome_meses [12][12] ={"JANEIRO", "FEVEREIRO" ,"MARCO" ,"ABRIL", "MAIO" ,"JUNHO", "JULHO", "AGOSTO" ,"SETEMBRO" ,"OUTUBRO", "NOVEMBRO", "DEZEMBRO"}; int mes; for(mes=-1; mes<11; ++mes) { printf("\n\n\t%s\n\n", &nome_meses[mes][12]); mostra_semana(semana_1); mes_completo_31(mes_1); completo(mes_1, ano, mes+2); imprimi_txt( mes_1,ano,mes+2,fp); printf("\n\n\n\n"); } } void mes(vetor vet) { int count, count_2,k; printf("\n"); for(count=0;count<43;count++) { vet[count]=k; k++; } printf("\n"); } void mostra_mes(vetor vet) { int count, count_2; for(count=0;count<M_LINHA;count++) printf("%d", vet[count]); } main() { v_sem semana_1; v_mes mes_1; //declaração de vetor vetor vet; int ano_1,mes; FILE *fp; //CHAMADA DE FUNÇÕES. ano_1 = le_ano(); mes = le_mes(); calcula_dia(ano_1,mes); printf("%d \n\n",calcula_dia(ano_1,mes)); semana(semana_1); mostra_semana(semana_1); mes_completo_31(mes_1); completo(mes_1,ano_1,mes); printf("\n\n"); //mes(vet); //mostra_mes(vet); int ano45; printf("digite um ano"); scanf("%d", &ano45); imprime_ano(ano45,semana_1,fp); imprimi_txt( mes_1,ano_1,mes,fp); system("pause"); }
×
×
  • Criar Novo...