Projeto Calendário Permanente (veja a imagem abaixo):
Como eu faço?
Abaixo está um código base para você. As matrizes A1, A2, B e C já estão preenchidas. Você implementará a função procurarLinha, que varre uma matriz, em busca de um valor, e retorna somente a linha em que encontrou o elemento.
Adicionalmente, precisará terminar o main:
-Com base no ano, decida se vai fazer a primeira pesquisa em A1 (ano até 2000) ou A2 (a partir de 2001). Use para a pesquisa somente os últimos dois dígitos do ano (para isso você pode usar o resto da divisão inteira por 100: ano%100).
Esta pesquisa é feita com a chamada da função procurarLinha; só interessa saber em que linha da matriz está este ano.
-Use a linha achada acima e a coluna correspondente ao mês para ler um valor da matriz B.
-Some o valor lido da matriz B ao dia: esta soma deverá ser procurada na matriz C, com a chamada da função procurarLinha; só interessa saber em que linha da matriz está esta soma. Esta linha contém o dia da semana correspondente a data em questão: 0 para domingo, 1 para segunda, 2 para terça, 3 para quarta, 4 para quinta, 5 para sexta e 6 para sábado.
Exemplo numérico para melhorar o entendimento: vamos descobrir que dia da semana corresponde a 01/09/2018:
1) 2018 > 2000, então procuro 18 na matriz A2: está na 10ª linha.
2) Na matriz B, 10ª linha, coluna correspondente ao mês de Setembro, leio o número 6.
3) Somo 6 mais o dia (1), obtendo 7.
4) Procuro em que linha da matriz C existe o número 7: última linha, correspondente à Sábado!!
Código de apoio:
#include <stdio.h>
#include <locale.h>
int procurarLinha(int L, int C, int mat[L][C], int proc)
{
//aqui você completa ....
//esta função retorna a linha em que proc aparece na matriz
for(....)
{ for(...)
{ if(...)
{
}
}
}
}
//populando a tabela C
x=1;
for(c=0;c<6;c++)
for(l=0;l<7;l++, x++)
if(x>37) C[l][c]=-1;
else C[l][c]=x;
int dia, mes, ano, resposta, linha;
setlocale(LC_ALL, "Portuguese");
printf("\nEntre com uma data no formato DD/MM/AAAA: ");
scanf("%d/%d/%d", &dia, &mes, &ano);
if(ano<1901 || ano>2092) printf("Erro!! O ano deve ser de 1901 a 2092.\n");
//aqui você completa ......
//decida se vai usar A1 ou A2
//extraia os dois últimos dígitos para procurar em A1 ou A2 -----> encontrei uma linha para olhar na matriz B
//com o mês eu terei uma coluna na matriz B (Janeiro é mês 1 mas corresponde à coluna 0, Fevereiro é mês 2 mas corresponde à coluna 1, ........Dezembro corresponde à coluna 11)
//some o dia fornecido com o valor encontrado na matriz B
//procure este último cálculo na matriz C ------> linha
linha == 0 ---> Domingo
// linha == 1 ---> Segunda
// ....
// linha == 6 ---> Sábado//
Pergunta
AVF99999999999999
Projeto Calendário Permanente (veja a imagem abaixo):
Como eu faço?
Abaixo está um código base para você. As matrizes A1, A2, B e C já estão preenchidas. Você implementará a função procurarLinha, que varre uma matriz, em busca de um valor, e retorna somente a linha em que encontrou o elemento.
Adicionalmente, precisará terminar o main:
-Com base no ano, decida se vai fazer a primeira pesquisa em A1 (ano até 2000) ou A2 (a partir de 2001). Use para a pesquisa somente os últimos dois dígitos do ano (para isso você pode usar o resto da divisão inteira por 100: ano%100).
Esta pesquisa é feita com a chamada da função procurarLinha; só interessa saber em que linha da matriz está este ano.
-Use a linha achada acima e a coluna correspondente ao mês para ler um valor da matriz B.
-Some o valor lido da matriz B ao dia: esta soma deverá ser procurada na matriz C, com a chamada da função procurarLinha; só interessa saber em que linha da matriz está esta soma. Esta linha contém o dia da semana correspondente a data em questão: 0 para domingo, 1 para segunda, 2 para terça, 3 para quarta, 4 para quinta, 5 para sexta e 6 para sábado.
Exemplo numérico para melhorar o entendimento: vamos descobrir que dia da semana corresponde a 01/09/2018:
1) 2018 > 2000, então procuro 18 na matriz A2: está na 10ª linha.
2) Na matriz B, 10ª linha, coluna correspondente ao mês de Setembro, leio o número 6.
3) Somo 6 mais o dia (1), obtendo 7.
4) Procuro em que linha da matriz C existe o número 7: última linha, correspondente à Sábado!!
Código de apoio:
#include <stdio.h>
#include <locale.h>
int procurarLinha(int L, int C, int mat[L][C], int proc)
{
//aqui você completa ....
//esta função retorna a linha em que proc aparece na matriz
for(....)
{ for(...)
{ if(...)
{
}
}
}
}
//Calendário permanente de 1901 a 2092
int A1[28][4], A2[28][4];
int B[28][12]=
{{4,0,0,3,5,1,3,6,2,4,0,2},
{5,1,1,4,6,2,4,0,3,5,1,3},
{6,2,2,5,0,3,5,1,4,6,2,4},
{0,3,4,0,2,5,0,3,6,1,4,6},
{2,5,5,1,3,6,1,4,0,2,5,0},
{3,6,6,2,4,0,2,5,1,3,6,1},
{4,0,0,3,5,1,3,6,2,4,0,2},
{5,1,2,5,0,3,5,1,4,6,2,4},
{0,3,3,6,1,4,6,2,5,0,3,5},
{1,4,4,0,2,5,0,3,6,1,4,6},
{2,5,5,1,3,6,1,4,0,2,5,0},
{3,6,0,3,5,1,3,6,2,4,0,2},
{5,1,1,4,6,2,4,0,3,5,1,3},
{6,2,2,5,0,3,5,1,4,6,2,4},
{0,3,3,6,1,4,6,2,5,0,3,5},
{1,4,5,1,3,6,1,4,0,2,5,0},
{3,6,6,2,4,0,2,5,1,3,6,1},
{4,0,0,3,5,1,3,6,2,4,0,2},
{5,1,1,4,6,2,4,0,3,5,1,3},
{6,2,3,6,1,4,6,2,5,0,3,5},
{1,4,4,0,2,5,0,3,6,1,4,6},
{2,5,5,1,3,6,1,4,0,2,5,0},
{3,6,6,2,4,0,2,5,1,3,6,1},
{4,0,1,4,6,2,4,0,3,5,1,3},
{6,2,2,5,0,3,5,1,4,6,2,4},
{0,3,3,6,1,4,6,2,5,0,3,5},
{1,4,4,0,2,5,0,3,6,1,4,6},
{2,5,6,2,4,0,2,5,1,3,6,1}};
int C[7][6];
int main()
{
int l,c,x;
//populando a tabela A1
x=-3;
for(c=0;c<4;c++)
for(l=0;l<28;l++, x++)
if(x<1) A1[l][c]=-1;
else if(x<100) A1[l][c]=x;
else if(x==100) A1[l][c]=0;
else A1[l][c]=-1;
//populando a tabela A2
x=-19;
for(c=0;c<4;c++)
for(l=0;l<28;l++, x++)
if(x<1) A2[l][c]=-1;
else A2[l][c]=x;
//populando a tabela C
x=1;
for(c=0;c<6;c++)
for(l=0;l<7;l++, x++)
if(x>37) C[l][c]=-1;
else C[l][c]=x;
int dia, mes, ano, resposta, linha;
setlocale(LC_ALL, "Portuguese");
printf("\nEntre com uma data no formato DD/MM/AAAA: ");
scanf("%d/%d/%d", &dia, &mes, &ano);
if(ano<1901 || ano>2092) printf("Erro!! O ano deve ser de 1901 a 2092.\n");
//aqui você completa ......
//decida se vai usar A1 ou A2
//extraia os dois últimos dígitos para procurar em A1 ou A2 -----> encontrei uma linha para olhar na matriz B
//com o mês eu terei uma coluna na matriz B (Janeiro é mês 1 mas corresponde à coluna 0, Fevereiro é mês 2 mas corresponde à coluna 1, ........Dezembro corresponde à coluna 11)
//some o dia fornecido com o valor encontrado na matriz B
//procure este último cálculo na matriz C ------> linha
linha == 0 ---> Domingo
// linha == 1 ---> Segunda
// ....
// linha == 6 ---> Sábado//
return 0;
Editado por AVF99999999999999}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.