Acesso a elementos vetoriais
Tese: Acesso a elementos vetoriais. Pesquise 861.000+ trabalhos acadêmicosPor: deadsong17 • 25/5/2014 • Tese • 6.036 Palavras (25 Páginas) • 294 Visualizações
Explique os problemas do uso de linguagem natural para definição de requisitos de usuário e de sistema e mostre, usando pequenos exemplos, como a estruturação de linguagem natural em formulários pode ajudar a evitar algumas dessas dificuldades.
Acesso aos elementos do vetor
Para acessar os elementos de um vetor usa-se índices. O índice define a posição da variável dentro do vetor.
Em todos os vetores tem o primeiro elemento na posição 0(zero). Assim, se tomarmos "K" como sendo o tamanho do vetor a última posição é a de índice "K-1"
Vetor[0] = 4; // Coloca 4 na primeira posição de "Vetor" Vetor[4] = 8; // Coloca 8 na última posição de "Vetor"
Exemplos com Vetores
int Vetor[5]; // declara um vetor de 5 posições
int Matriz[5][3]; // declara uma matriz de 5 linhas e 3 colunas
Vetor[0] = 9; // coloca 9 na primeira posição do vetor Vetor[4] = 30 // coloca 30 na última posição do vetor Matriz[0][1] = 15; // coloca 15 na célula que está na primeira linha // e na segunda coluna da matriz
Preenchimento de um vetor com um dado
for(i=0; i<5; i++) for(i=0; i<=4; i++) Vetor[i] = 30; Vetor[i] = 30;
Colocar os números de 1 a 5 em Vetor
for(i=0; i<5; i++) Vetor[i] = i+1;
Colocar os números de 5 a 1 em Vetor
for(i=0; i<5; i++) Vetor[i] = 5-i;
Uso de Constantes para definir o tamanho de um vetor
#define TAM_MAX 10
double VetReais[TAM_MAX];
for(i=0; i<TAM_MAX; i++) VetReais[i] = TAM_MAX - i; // coloca 5,4,3,2,1 no vetor
Copiar os dados de um vetor para outro
#define TAM_MAX 10
double VetReais[TAM_MAX], Copia[TAM_MAX];
for(i=0; i<TAM_MAX; i++) VetCopia[i] = VetReais[i]; // Copia os dados
de um vetor // para outro
Copiar os dados de um VET1 para as primeiras 5 posições de COPIA e VET2 para as outras 5
#define TAM_MAX 10
// Note que a declaração do vetor "Cópia" cria o dobro de posições double Vet1[TAM_MAX], Vet2[TAM_MAX], Copia[TAM_MAX*2];
for(i=0; i<TAM_MAX; i++) VetCopia[i] = Vet1[i]; // Copia os dados do primeiro vetor for(i=0; i<TAM_MAX; i++) // Copia os dados do segundo vetor VetCopia[i+TAM_MAX] = Vet2[i]; // ****** Pergunta: Como fazer a cópia usando um único comando for ?
Leitura dos dados de um um vetor
#define TAM_MAX 10
double Vet1[TAM_MAX];
for(i=0; i<TAM_MAX; i++) scanf("%f",&Vet1[i]);
Encontrar o maior valor dentro de um vetor
#define TAM_MAX 10
double Vet1[TAM_MAX]; double Maior;
for(i=0; i<TAM_MAX; i++) scanf("%f",&Vet1[i]);// le os dados Maior = Vet1[0]; // assume que o primeiro é o maior for(i=0; i<TAM_MAX; i++)
if Vet1[i] > Maior Maior = Vet1[i];
printf("O maior elemento é %f\n",Maior);
// ****** Pergunta: Como fazer a mesma busca e imprimir também a // ****** posição do dado dentro do vetor. Tente fazer isto usando // ****** apenas 1 variável.
Crie um programa que copie para um vetor os elementos de outro em ordem crescente.
// a idéia aqui é encontrar o menor elemento do vetor 1 e colocar no vetor 2. Tirar este número de vet1, por exemplo, // colocando no seu lugar, no vetor 1, um número grande e recomeçar a busca pelo novo número menor.
#define TAM_MAX 10
double Vet1[TAM_MAX], VetOrdenado[TAM_MAX]; double Menor, Maior;
for(i=0; i<TAM_MAX; i++) scanf("%f",&Vet1[i]);// le os dados
PosMaior = 0; // assume que o maior está na 1a. posição for(i=0; i<TAM_MAX; i++) if Vet1[i] > Vet1[PosMaior] PosMaior = i; // acha a posição do maior
for(j=0; j<TAM_MAX;j++) { PosMenor = 0; // assume que o primeiro é o menor for(i=0; i<TAM_MAX; i++) if Vet1[i] < Vet1[PosMenor] PosDoMenor = i; VetOrdenado[j]= Vet1[PosMenor]; // copia menor para o novo vetor // inutiliza a posição do menor colocando nela um número grande Vet1[PosMenor] = Vet1[PosMaior]; // no caso o maior do vetor
}
for(i=0; i<TAM_MAX; i++) print("%f\n",VetOrdenado[i]);// Imprime os dados
Passagem de Matrizes e Vetores como Parâmetro
Para passar uma matriz ou vetor como parâmetro, basta declarar o parâmetro da mesma forma que a matriz foi declarada. Um vetor é sempre passado por referência, logo, qualquer alteração em seus elementos altera a variável usada como parâmetro na chamada da rotina.
#define TAM_MAX 10
void ImprimeVet (int Tam, int Vet[TAM_MAX]) { int i; for (i=0; i< Tam; i++) { printf("%d", Vet[i]); } } void main() { int Notas[TAM_MAX];
ImprimeVet(TAM_MAX, Notas); // Passa o vetor 'Notas' como // parâmetro }
A passagem dos elementos de um vetor como parâmetro é idêntica à passagem de uma variável. Ou seja, quando a passagem for por valor usa-se vet[i] e quando for por referência usa-se &vet[i].
void Imprime (int N) // função com um parâmetro por valor { printf("%d", N); }
void Incr (int *N) // função com um parâmetro por referência { *N = *N + 1; }
void Incr (int *N) { int i; for (i=0; i< Tam; i++) { Incr(&Vet[i]); // Note que é preciso colocar o '&' antes // de Vet[i] pois a função 'Incr' espera um // parâmetro por REFERÊNCIA
Imprime(Vet[i]); // Note que NÃO se deve colocar nada antes // de Vet[i] pois a função 'Imprime' espera um // parâmetro por VALOR } }
Exemplos
...