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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

int i;<br />

float Soma;<br />

Soma = 0;<br />

for (i = 0; i < t; i++)<br />

Soma = Soma + v[i];<br />

return (Soma/t);<br />

}<br />

main()<br />

{<br />

int i, Quant, NotasBoas;<br />

float *p, Med;<br />

Quant = ArmazenaNotas(p);<br />

Med = Media(p, Quant);<br />

NotasBoas = 0;<br />

for (i = 0; i < Quant; i = i + 1)<br />

if (p[i] > Med)<br />

NotasBoas = NotasBoas + 1;<br />

printf("Media das notas: %f \n", Med);<br />

printf("Notas maiores que a media: %d", NotasBoas);<br />

}<br />

2. Imagine que quiséss<strong>em</strong>os o desvio médio das notas do ex<strong>em</strong>plo anterior. Esta medida estatística é<br />

assim definida: o desvio de um el<strong>em</strong>ento <strong>em</strong> relação à média aritmética é a diferença entre o el<strong>em</strong>ento e a<br />

média aritmética da relação; o desvio médio é a média aritmética dos valores absolutos dos desvios.<br />

Pod<strong>em</strong>os então, como fiz<strong>em</strong>os acima, escrever uma função para calcular a média da relação de notas,<br />

armazenar os valores absolutos dos desvios <strong>em</strong> um vetor e utilizar a função que calcula a média para calcular<br />

a média destes valores absolutos.<br />

float DesvioMedio(float *v, int t)<br />

{<br />

int i;<br />

float *d;<br />

float Med;<br />

Med = Media(v, t);<br />

for (i = 0; i < t; i++)<br />

d[i] = abs(v[i] - Med);<br />

return(Media(d, t));<br />

}<br />

Observe que este ex<strong>em</strong>plo ilustra outra vantag<strong>em</strong> do uso de funções: a mesma função Media foi<br />

utilizada para determinação de médias de relações diferentes.<br />

3. Imagin<strong>em</strong>os agora que queiramos uma função que retorne o maior valor de uma relação armazenada<br />

<strong>em</strong> um vetor. Uma possível solução é supor que o maior valor procurado é o primeiro el<strong>em</strong>ento do vetor e,<br />

<strong>em</strong> seguida, percorrer o vetor comparando cada componente com o valor que, até o momento, é o maior,<br />

substituindo o valor deste maior el<strong>em</strong>ento quando se encontra uma componente maior que ele.<br />

float MaiorEl<strong>em</strong>ento(float *v, int t)<br />

{<br />

int i;<br />

float Maior;<br />

Maior = v[0];<br />

for (i = 1; i < t; i = i + 1)<br />

if (v[i] > Maior)<br />

Maior = v[i];<br />

return(Maior);<br />

}<br />

Observe que a função acima retorna o maior el<strong>em</strong>ento armazenado no vetor, mas não retorna a posição<br />

deste maior el<strong>em</strong>ento, o que <strong>em</strong> muitas situações é indispensável. Para isto é necessário um parâmetro com<br />

passag<strong>em</strong> por referência, como visto no capítulo anterior. Este parâmetro recebe o valor zero e <strong>em</strong> seguida o

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

Saved successfully!

Ooh no, something went wrong!