segunda-feira, 1 de fevereiro de 2010

Vetores:

Motivação para aprendermos vetor:

Dados 5 notas, calcular a média das notas e identificar se elas são maiores ou menor do que a média das notas:

#include<stdio.h>
int main(void)
{

float nota1,nota2,nota3,nota4,nota5,media;
media=0.0;

scanf("%f",&nota1);
scanf("%f",&nota2);
scanf("%f",&nota3);
scanf("%f",&nota4);
scanf("%f",&nota5);
media=nota1+nota2+nota3+nota4+nota5;
if(nota1>media)
printf("%f > %f",nota1,media);
if(nota2>media)
printf("%f > %f",nota2,media);
if(nota3>media)
printf("%f > %f",nota3,media);
if(nota4>media)
printf("%f > %f",nota4,media);
if(nota5>media)
printf("%f > %f",nota5,media);

getchar();
getchar();
}

Isso, de fato, é uma solução, porém, como sabemos, em uma sala de aula, não temos apenas 5 alunos, então, e se fossem 50 alunos, ou, 1000 alunos?
Meio cansativo, não?
Para solucionarmos isso, aprenderemos vetor, ou, também chamada de variável composta homogênea unidimensinal.

Um vetor, é uma estrutura de armazenamento de dados e é usada para armazenar valores do mesmo tipo.
Um vetor, possui "células" de armazenamento, por exemplo, criamos uma variável nota, essa variável nota, poderá armazenar quantos notas você quiser, isso é basicamente um vetor.
Veja um exemplo de declaração de vetor para você entender melhor:

float nota[5];

Nessa declaração, estamos reservando 5 células, ou seja, 5 números para a variável nota!
A referência de cada uma dessas células é realizada pelo nome do vetor nota e por um índice.

O índice, sempre começa do zero, ou seja, como são nesse caso, cinco células, iremos percorrer até a índice 4, pois, 0,1,2,3,4 = 5 células!

Segue basicamente essa estrutura:

0 1 2 3 4
|...|...|...|...|...|

Para referenciar o conteúdo de cada célula do vetor nota, por exemplo, queremos ler nota na célula 0, então fazemos:

scanf("%f",&nota[0]);

agora, na célula 1:

scanf("%d",&nota[1]);

Entenderam o raciocínio?

Vamos fazer aquele mesmo exercício das notas, agora com a utilização de vetor, para vermos como é muito mais fácil e prático:

#include<stdio.h>
int main(void)
{
float nota[5], media;
int cont;

media=0.0;
cont=0;

while(cont<=4){ scanf("%f",nota[cont]); media=media+nota[cont]); cont++; } /*veja, na primeira entrada do laço, cont vale 0, entao, leremos nota[0], depois, incrementamos cont e na segunda entrada do laço, leremos nota[1].. até nota[4]! */ for(cont=0; cont<=4; cont++){ if(nota[cont]>media)
printf("a nota %d eh maior que a media da sala",cont+1 );
eslse
printf("a nota %d eh menor que a media da sala",cont+1);
}
getchar();
getchar();
}
Procurem entender perfeitamente essa estrutura, mais tarde, continuaremos com exemplos sobre ela! Por hora, façam esse exercício e, como agora temos o fórum, postem no fórum seu código para ser avaliado :)
1) Dado uma sequência de 10 números inteiros, imprimi-lá em ordem inversa:

Nenhum comentário:

Postar um comentário