Buscar

Resumo de Vetores e Matrizes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Resumo de Vetores e Matrizes 
Vetores: 
Até agora vimos como manipular variáveis simples que armazenam apenas um valor 
de um determinado tipo, porém se quisermos outro valor para a variável teremos que 
perder o valor anterior nela contido e salvar o novo. Para isso existem vetores que são 
variáveis que armazenam n elementos de um mesmo tipo. 
Declarando: 
Tipo NomedaVariavel[tamanho]; 
Cada elemento desse tipo será armazenado nos índices da variável, esse índices variam 
de 0 a tamanho-1. Por exemplo, se tamanho for 5 a variável salvará 5 elementos desse 
tipo sendo o primeiro em variável[0] e o ultimo em variável[4]. 
Obs.: Nunca confundam isso, sempre é do índice 0 a n-1 e não de 1 a n como alguns 
professores falaram em sala. 
Ex.: Recolhendo e mostrando os elementos de um vetor de inteiros de tamanho 5 
int main() 
{ 
 int vetor[5], i ; 
 for ( i = 0 ; i < 5 ; i++ ) 
 { 
 printf("Digite o valor de vetor[%d]:\n",i); 
 scanf("%d",&vetor[i]); 
 } 
 printf("Mostrando o vetor:\n"); 
 for ( i = 0 ; i < 5 ; i++ ) 
 { 
 printf("%d ",vetor[i]); 
 } 
 return 0 ; 
} 
Obs.: Nunca declarem o vetor com n posições sem especificar o valor de n. Por 
exemplo, int vetor [n] está errado, pois é necessário que o tamanho seja um numero e 
não uma variável vazia. Observem que nesse exemplo o for vai de i=0 ate i<5(i=4) 
Vetores e funções 
tipo NomedaFunção(int n, tipo vetor[]) 
{ 
 Declaração de variáveis; 
 Lista de comandos; 
} 
Em C se quisermos passar um vetor como parâmetro de uma função nós especificamos 
o tipo dele, mas não informamos dentro dos colchetes o tamanho do vetor, por isso 
precisamos também passar como parâmetro um numero inteiro que representa o 
tamanho nesse vetor. Caso nossa função retorne algo precisaremos especificar o tipo 
da função e colocar o return alguma coisa daquele tipo no final da função. 
Normalmente quando queremos fazer apenas alterações em um vetor sem 
necessariamente retornar nenhum número, alterações do tipo preencher, multiplicar 
por constante, o tipo da função será void e não precisaremos do return. 
Obs.: Nunca o tipo de uma função será um vetor, o mais frequente será que vocês 
utilizem funções de retorno do tipo int ou float. 
Ex.: Funções para preencher e mostrar um vetor de inteiros de 5 elementos 
void Preencher(int n, int vet[]) 
{ 
 int i ; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 printf("Digite o valor de vetor[%d]:\n",i); 
 scanf("%d",&vet[i]); 
 } 
} 
void Mostrar(int n, int vet[]) 
{ 
 int i; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 printf("%d ",vet[i]); 
 } 
} 
 
int main() 
{ 
 int vetor[5]; 
 Preencher(5,vetor); 
 printf("Mostrando o vetor:\n"); 
 Mostrar(5,vetor); 
 return 0 ; 
} 
Na hora de invocar as funções na função principal main, basta respeitar a ordem dos 
parâmetros nas funções, no exemplo acima jogando primeiro o tamanho do vetor e 
depois o nome da variável que utilizo como vetor, sem que haja a preocupação de 
colocar colchetes. 
Matrizes 
Se vetores são nada mais do que uma variável que armazena um conjunto de 
elementos do mesmo tipo, então um conjunto de vetores será uma matriz. 
Tipo NomedaVariavel[linhas][colunas]; 
As linhas representam a quantidade de vetores, as colunas a quantidade de elementos 
que cada vetor armazenará. Obedecem as mesmas regras de índice de um vetor 
comum de 0 a linhas-1 e de 0 a colunas-1. Será necessária uma estrutura de repetição 
para os elementos das linhas e dentro dela outra estrutura de repetição para os 
elementos da coluna tanto para recolher dados ou para mostrar. Ou seja, em uma 
linha qualquer primeiro acessamos os elementos das colunas para poder ir para a 
próxima linha. 
Ex.: Preenchendo uma matriz 4x4 e mostrando na forma matricial 
int main() 
{ 
 int matriz[4][4],i,j; 
 for ( i = 0 ; i < 4 ; i++ ) 
 { 
 for ( j = 0 ; j < 4 ; j++ ) 
 { 
 printf("Digite o elemento[%d][%d]:\n",i,j); 
 scanf("%d",&matriz[i][j]); 
 } 
 } 
 printf("Mostrando a matriz na forma matricial:\n"); 
 for ( i = 0 ; i < 4 ; i++ ) 
 { 
 for ( j = 0 ; j < 4 ; j++ ) 
 { 
 printf("%d ",matriz[i][j]); 
 } 
 printf("\n"); 
 } 
 
 return 0 ; 
} 
Matrizes e funções 
tipo NomedaFunção(int n, tipo matriz[][k]) 
{ 
 Declaração de variáveis; 
 Lista de comandos; 
} 
Analogamente a passagem de parâmetros de matrizes obedece praticamente as 
condições de passagem de vetores comuns com uma única diferença nós não 
especificamos dentro do colchetes a quantidade de linhas, mas temos que especificar 
a quantidade de colunas, k tem que ser um numero positivo e o n será o parâmetro 
que diz a quantidade de linhas/quantidade de vetores. 
Obs.: Utilizei o k apenas por método didático, mas deve ser um numero positivo ao 
invés de k, ou seja k representa a quantidade de elementos de cada vetor pode 
armazenar e o n a quantidade de vetores. 
Ex.: Exercício adaptado que profº Leandro pediu em sala com menu e utilizando 
matrizes e funções utilizando uma matriz 3 x 3. 
void Menu() 
{ 
 printf("1-PREEENCHER MATRIZ\n"); 
 printf("2-MOSTRAR MATRIZ\n"); 
 printf("1-MULTIPLICAR MATRIZ POR ESCALAR\n"); 
 printf("4-TRANSPOR MATRIZ\n"); 
 printf("5-SAIR\n"); 
} 
void Preencher(int n, int mat[][3]) 
{ 
 int i,j ; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 for ( j = 0 ; j < n ; j++ ) 
 { 
 printf("Digite o elemento[%d][%d]:\n",i,j); 
 scanf("%d",&mat[i][j]); 
 } 
 } 
 printf("A matriz foi prrenchida\n"); 
} 
void Mostrar(int n, int mat[][3]) 
{ 
 int i,j; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 for ( j = 0 ; j < n ; j++ ) 
 { 
 printf("%d ",mat[i][j]); 
 } 
 printf("\n"); 
 } 
} 
void Multiplicar(int n, int mat[][3], int escalar) 
{ 
 int i,j; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 for ( j = 0 ; j < n ; j++ ) 
 { 
 mat[i][j] = escalar*mat[i][j]; 
 } 
 } 
 printf("A matriz foi multiplicada por %d!\n",escalar); 
} 
void Transposta(int n, int mat[][3]) 
{ 
 int i,j,aux; 
 for ( i = 0 ; i < n ; i++ ) 
 { 
 for ( j = 0 ; j < n ; j++ ) 
 { 
 if ( i < j ) 
 { 
 aux = mat[i][j]; 
 mat[i][j] = mat[j][i]; 
 mat[j][i] = aux; 
 
 } 
 } 
 } 
 printf("A matriz foi transposta!\n"); 
} 
 
int main() 
{ 
 int matriz[3][3],k,x; 
 do 
 { 
 Menu(); 
 do 
 { 
 scanf("%d",&x); 
 if ( x < 1 || x > 5 ) 
 { 
 printf("Opção Invalida!Escolha entre 1 e 5\n"); 
 } 
 }while( x < 1 || x > 5 ); 
 if ( x == 1 ) 
 { 
 Preencher(3,matriz); 
 } 
 else if ( x == 2 ) 
 { 
 Mostrar(3,matriz); 
 } 
 else if ( x == 3 ) 
 { 
 printf("Digite um valor para o escalar:\n"); 
 scanf("%d",&k); 
 Multiplicar(3,matriz,k); 
 } 
 else if ( x == 4 ) 
 { 
 Transposta(3,matriz); 
 } 
 else 
 { 
 printf("Fim de programa!\n"); 
 } 
 
 }while( x != 5 ); 
 
 
 return 0 ; 
}

Outros materiais