22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!