Sunteți pe pagina 1din 11

Vectores

Tipo de dado usado para representar um CONJUNTO de dados do um mesmo tipo Estrutura de dados homognea unidimensional

Ex: Ler a nota de 3 alunos e calcular a mdia int nota0, nota1, nota2;

printf(entre com a 1a. nota); scanf(%d%d%d, &nota0, &nota1, &nota2); printf(mdia = %f, (nota0 + nota1 + nota2) / 3));

E se forem 3000 alunos??


Nuno Costa 1

Declarao de Vectores
Tipo nomedavarivel [n de lementos] int notas[4]; notas uma varivel do tipo array de 4 elementos do tipo int. A sua representao ser: a[0] a[1] a[2] a[3] em que cada posio guarda um inteiro.

Nuno Costa

Declarao de Vectores
Ocupam

posies de memria contguas e neste caso o seu ndice varia obrigatoriamente de 0 a 3. Ou seja, tem-se, para essas 4 posies os elementos a[0], a[1], a[2], a[3]
So

tratados como se fossem quatro variveis distintas. Atribuindo os valores 1,2 e 3 respectivamente, aos trs primeiros elementos a[0]=1; a[1]=2; a[2]=3; Teremos:

1
a[0]

2
a[1]

3
a[2] a[3]
Nuno Costa 3

Declarao de Vectores
O

nome array uma constante e representa o endereo da 1. posio do array. Isto : a==&a[0] /* O operador & d o endereo da varivel. Neste caso d o endereo de a[0]*/

Supondo que o vector se iniciava na posio de memria com o endereo 100, e que cada inteiro gasta 2 bytes, ter-se-ia: a==100
&a[0]==100 &a[1]==102 &a[2]==104 &a[3]==106
Nuno Costa 4

ndice dos Vectores


Em C no existe declarao de vector dinmico O tamanho de um vector tem de ser determinado no momento da compilao

Exemplo:

int alunos; int notas [ alunos ]; : : : printf (Nmero de alunos); scanf (%d, &alunos);

NO VLIDO !!!
Nuno Costa 5

Inicializao de vectores
int a[4]={1,2,3}; /*ir definir (criar) um vector de quatro inteiros e inicializar a[0] a 1, a[1] a 2, e a[2] a 3. */ int a[ ]={1,2,3}; /*ir definir um vector de apenas trs elementos e inicializa-los de forma idntica ao anterior.*/ char a[3]={b,k,n}; /*ir definir (criar) um vector de trs caracteres e inicializar a[0] a b, a[1] a k, e a[2] a n. */
Nuno Costa 6

Vectores Observaes importantes


Soluo: declarar um vector que suporte um nmero mximo de elementos, mesmo que o vector no fique todo completo
Exemplo: int int alunos; notas [ 70 ]; : : : printf (Nmero de alunos); scanf (%d, &alunos);

Nuno Costa

Vectores Observaes importantes

C no realiza verificao de limites em vectores nada impede o acesso alm do fim do vector sempre que necessrio faa a verificao dos limites

Nuno Costa

Exerccio: Calcular a mdia de 300 alunos


#include<stdio.h> #define N_ALUNOS 300 main( ) { int i; float notas [ N_ALUNOS ], for ( i = 0; i < N_ALUNOS; printf (Digite a nota scanf (%f, &notas[ i media += notas [ i ]; } printf ( Mdia = %f \n,

media = 0;

i++ ) { %d, i+1); ]);

media / N_ALUNOS);

for ( i = 0; i < N_ALUNOS; i++ ) { printf (\n Nota do aluno %d = , i+1); printf (%f \n, notas[ i ]); } }
Nuno Costa 9

#include <stdio.h> Vectores Obs importantes #define TAMANHO 100 main( ) { int quantidade, media = 0; float notas [ TAMANHO ]; // quantidade deve ser TAMANHO printf ( quantas notas devo ler ?); scanf(%d, &quantidade); for ( i = 0; i < quantidade; i++) { printf ( nota %d, i+1); scanf(%d, &notas [ i ]); } : : : for ( i = 0; i < quantidade; i++) media += notas [ i ]; : : : Nuno Costa }

10

Passando um vector para uma funo

#include <stdio.h> int maximum( int [] ); main( ) {

/* ANSI function prototype */

int values[5], i, max; printf(Digite com 5 numeros:\n"); for( i = 0; i < 5; ++i ) scanf("%d", &values[i] ); max = maximum( values ); printf("\nValor Maximo: %d\n", max ); }

Nuno Costa

11

S-ar putea să vă placă și