Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Uma função para exibir uma tabela armazenada numa matriz também é muito simples. Basta, para que<br />
a matriz seja exibida na forma de tabela, mudar a linha cada vez que a exibição de uma linha é concluída.<br />
void ExibeTabela(float Mat[10][10], int m, int n)<br />
{<br />
int i, j;<br />
for (i = 0; i < m; i = i + 1)<br />
{<br />
for (j = 0; j < n; j = j + 1)<br />
printf("%.1f ", Mat[i][j]);<br />
printf("\n");<br />
}<br />
}<br />
6.7 Ex<strong>em</strong>plos Parte V<br />
1. Um dos ex<strong>em</strong>plos do capítulo 3 apresentava uma função que recebia uma data e fornecia o dia da<br />
s<strong>em</strong>ana correspondente. Neste programa precisamos calcular o número de dias do ano decorridos até aquela<br />
data. Com a utilização da matriz DiasMeses comentada acima, pod<strong>em</strong>os escrever facilmente uma função<br />
com este objetivo.<br />
int DiaAno(int d, int m, int a)<br />
{<br />
int DiasMes[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},<br />
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};<br />
int i;<br />
if (((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0))<br />
for (i = 1; i < m; i = i + 1)<br />
d = d + DiasMes[1][i];<br />
else<br />
for (i = 1; i < m; i = i + 1)<br />
d = d + DiasMes[0][i];<br />
return(d);<br />
}<br />
L<strong>em</strong>brando que o valor de uma expressão lógica é 1 (um) se ela for verdadeira e 0 (zero) se ela for<br />
falsa, poderíamos armazenar o valor da expressão lógica que garante que um ano é bissexto e utilizar o<br />
conteúdo desta variável para escolher a componente do vetor DiasMeses que será utilizada: 1 (um) se for<br />
bissexto e (0) zero, caso contrário.<br />
int DiaAno(int d, int m, int a)<br />
{<br />
int i,Biss;<br />
Biss = ((a % 4 == 0) && (a % 100 != 0)) || (a % 400 == 0);<br />
for (i = 1; i < m; i = i + 1)<br />
d = d + DiasMes[Biss][i];<br />
return(d);<br />
}<br />
A razão de termos considerado a primeira componente igual a 0 (zero) foi para compatibilizar o<br />
número correspondente a cada mês com a componente do vetor, já que (repetindo pela última vez) a primeira<br />
componente de um vetor é de índice zero.<br />
2. Como no ex<strong>em</strong>plo <strong>em</strong> que o próprio sist<strong>em</strong>a gerou os quadrados dos c<strong>em</strong> primeiros números<br />
inteiros, o sist<strong>em</strong>a pode gerar uma matriz. Para ex<strong>em</strong>plificar isto, apresentar<strong>em</strong>os uma função que gera a<br />
matriz identidade de ord<strong>em</strong> n. Para um inteiro positivo dado, a matriz identidade de ord<strong>em</strong> n é a matriz I n =<br />
(i rs ), de ord<strong>em</strong> nxn, dada por i rs = 1, se r = s, e i rs = 0, se r ≠ s. Esta matriz é muito importante no estudo das<br />
matrizes, sendo utilizada, por ex<strong>em</strong>plo, para a determinação da matriz inversa de uma matriz inversível. Por<br />
ex<strong>em</strong>plo, se n = 3, t<strong>em</strong>os