Buscar

Vetor e matrizes em C

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

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

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ê viu 3, do total de 54 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

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

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ê viu 6, do total de 54 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

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

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ê viu 9, do total de 54 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

Prévia do material em texto

Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Vetores e matrizes em C
Prof. DSc. Newton Spolaôr
Disciplina Computação I
Bacharelado em Ciência da Computação
Universidade Estadual do Oeste do Paraná (UNIOESTE)
Brasil
20/09/2016
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Sumário
1 Introdução
2 Vetor unidimensional
3 Vetor bidimensional (matriz)
4 Considerações finais
Newton Spolaôr Vetores e matrizes em C 2
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Aula anterior em um breve olhar
Na aula anterior foram apresentados conceitos sobre
Funções: subalgoritmos com 0, 1 ou mais parâmetros, um
nome, um tipo de retorno e um corpo
Passagem de parâmetros por valor/cópia e por referência
Nesta aula: aplicação do conceito de vetores e matrizes
em C
Newton Spolaôr Vetores e matrizes em C 3
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Motivação para novos tipos de dados [1]
Imagine que desejamos armazenar as notas de 10 alunos
Uma solução com os conceitos já vistos na disciplina ...
#include<stdio.h>
int main() {
double n1,n2,n3,n4,n5,n6,n7,n8,n9,n10;
printf("Digite 10 notas:\n");
scanf("%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
&n1,&n2,&n3,&n4,&n5,&n6,&n7,&n8,&n9,&n10);
//...
return 0;
}
Newton Spolaôr Vetores e matrizes em C 4
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Motivação para novos tipos de dados [1]
Como proceder se tivéssemos 100 alunos?
O exemplo apresentado ilustra uma situação em que o
algoritmo não escala bem, i.e., não gerencia nem se
adapta bem a uma quantidade crescente de dados
Uma maneira de melhorar a escalabilidade de algoritmos
como o do exemplo é obtida por meio de novos tipos de
dados
Tipo para conjuntos de dados homogêneos: vetor simples,
com 1 ou mais dimensões
Tipo para conjuntos de dados heterogêneos: vetor
composto (struct)
Newton Spolaôr Vetores e matrizes em C 5
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Vetor simples unidimensional
Agrupamento contíguo de dados em memória, capaz de
armazenar um valor em cada uma de suas N posições [1]
O tamanho do vetor simples é fixo – para obter um “vetor”
de tamanho flexível, é necessário usar alocação dinâmica
Um vetor também pode ser visto como uma sequência de
N variáveis simples, todas do mesmo tipo e com o mesmo
identificador [2]
Cada elemento do vetor é acessado por meio de um
índice sequencial que varia de 0 a N-1
Newton Spolaôr Vetores e matrizes em C 6
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Vetor simples unidimensional em C [3]
Sintaxe: <tipo_dados_elemento>
<nome_vetor> [tamanho_vetor];
Exemplo: double ex[10];
Newton Spolaôr Vetores e matrizes em C 7
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Vetor simples bidimensional em C
Além de vetores unidimensionais, que exigem um único
índice para acesso aos elementos, C também possibilita
definir vetores multi-dimensionais
Nesta disciplina vamos focar nos vetores bidimensionais
(matrizes)
Enquanto que o vetor pode ser visto como uma “linha” de
dados, uma matriz seria um “retângulo”
Para acessar um elemento de uma matriz, são utilizados
dois índices sequenciais, correspondentes a linha e coluna
da matriz
Newton Spolaôr Vetores e matrizes em C 8
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Vetor simples bidimensional em C [3]
Sintaxe: <tipo_dados_elemento>
<nome_vetor>
[número_linhas][número_colunas];
Exemplo: double ex2[3][10];
Newton Spolaôr Vetores e matrizes em C 9
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Aula anterior em um breve olhar
Motivação para novos tipos de dados
Objetivo geral desta aula
Objetivo geral desta aula
Apresentar aplicação dos conceitos de vetores e matrizes
em C.
Newton Spolaôr Vetores e matrizes em C 10
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Sumário
1 Introdução
2 Vetor unidimensional
3 Vetor bidimensional (matriz)
4 Considerações finais
Newton Spolaôr Vetores e matrizes em C 11
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Iniciação de vetores
Para iniciar o vetor unidimensional exi com N=10
elementos inteiros, uma das seguintes alternativas pode
ser adotada
Alternativa 1: iniciação por um único comando
int exi[] = {9,2,3,7,50,40,71,51,43,6};
Newton Spolaôr Vetores e matrizes em C 12
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Iniciação de vetores
Para iniciar o vetor unidimensional exi com N=10
elementos inteiros, uma das seguintes alternativas pode
ser adotada
Alternativa 2: N leituras de dados ou atribuições
#include <stdio.h>
int main()
{
int i,k;
int exi[10]; //declaração de vetor
for (i=0;i<10;i++){
printf("Digite o elemento i do vetor: ");
scanf("%d",&exi[i]); //leitura do elemento exi[i]
}
Newton Spolaôr Vetores e matrizes em C 13
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Iniciação de vetores
Para iniciar o vetor unidimensional exi com N=10
elementos inteiros, uma das seguintes alternativas pode
ser adotada
Alternativa 2: N leituras de dados ou atribuições
printf("O primeiro elemento foi: %d\n",exi[0]);
//imprime exi[0]
return 0;
}
Newton Spolaôr Vetores e matrizes em C 14
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Atribuição de valores
Dado que exi seja um vetor unidimensional de N=10
elementos inteiros, é possível atribuir valor a cada um dos
seus elementos
Exemplo: atribuição do valor 45 ao primeiro elemento
exi[0]=45;
Newton Spolaôr Vetores e matrizes em C 15
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Consulta de valores
Exemplo: consulta dos N elementos de um vetor
#include <stdio.h>
int main()
{
int i;
int f[10]; //declaração de vetor
//atribuição de N valores ao vetor
for (i=0;i<10;i++){
printf("O elemento %d e: %d\n",i,f[i]);
}
return 0;
}
Newton Spolaôr Vetores e matrizes em C 16
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Passagem de argumento vetor como parâmetro [3]
Três abordagens podem ser empregadas para definir um
parâmetro vetor em uma função
Abordagem1: vetor de tamanho definido
Obs.: note o envio do tamanho do vetor como parâmetro
Exemplo: função sem retorno com um vetor de inteiros
como parâmetro
void myFunction(int param[10],int size) {
//...
}
Newton Spolaôr Vetores e matrizes em C 17
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Passagem de argumento vetor como parâmetro [3]
Três abordagens podem ser empregadas para definir um
parâmetro vetor em uma função
Abordagem 2: ponteiro
Obs.: um vetor é implementado como um ponteiro para o
1o elemento
Exemplo: função sem retorno com um ponteiro para inteiro
como parâmetro
void myFunction(int *param,int size) {
//...
}
Newton Spolaôr Vetores e matrizes em C 18
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Passagem de argumento vetor como parâmetro [3]
Três abordagens podem ser empregadas para definir um
parâmetro vetor em uma função
Abordagem 3: vetor de tamanho indefinido
Obs.: essa abordagem é possível porque C não checa o
tamanho de um parâmetro vetor; naturalmente, o código
chamador deve definir o tamanho do vetor
Exemplo: função sem retorno com um vetor de inteiros
como parâmetro
void myFunction(int param[],int size) {
//...
}
Newton Spolaôr Vetores e matrizes em C 19
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exemplo da abordagem 3 [3]
double f(int arr[],int size) {
int i;
double a;
double s = 0;
for (i = 0; i < size; i++) {
s += arr[i];
}
a = s / size;
return a;
}
Newton Spolaôr Vetores e matrizes em C 20
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Chamada à função previamente definida [3]
int main () {
/* an int array with 5 elements */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
/* pass pointer to the array as an argument */
avg = f( balance, 5 ) ;
printf( "Average value is: %f ", avg );
return 0;
}
O que deve ser alterado para as outras abordagens?
Newton Spolaôr Vetores e matrizes em C 21
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Chamada à função previamente definida [3]
int main () {
/* an int array with 5 elements */
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
/* pass pointer to the array as an argument */
avg = f( balance, 5 ) ;
printf( "Average value is: %f ", avg );
return 0;
}
O que deve ser alterado para as outras abordagens?
Newton Spolaôr Vetores e matrizes em C 21
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exemplo da abordagem 2
void printArray(int *arr,int size) {
int i;
for (i = 0; i < size; i++) {
printf("Elemento arr[%d] e: %d\n",i,arr[i]);
}
}
void cleanArray(int *arr,int size){
int i;
for (i = 0; i < size; i++) {
arr[i]=0;
}
} Newton Spolaôr Vetores e matrizes em C 22
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Chamada à função previamente definida
int main()
{
int i;
int foo [5]; //declaração de vetor
for (i=0;i<5;i++){
scanf("%d",&foo[i]);
}
printArray(foo,5);
cleanArray(foo,5);
printArray(foo,5);
return 0;
}
Newton Spolaôr Vetores e matrizes em C 23
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Vetor como retorno de função [3]
Um vetor pode ser enviado como retorno de função
Para tanto, é necessário definir o tipo de retorno como um
ponteiro
Além disso, o vetor deve ser declarado como uma variável
estática, de modo que ela se mantenha válida fora da
função
Exemplo: função que retorna um vetor de inteiros
int * myFunction() {
static int r[10];
//...
return r;
}
Newton Spolaôr Vetores e matrizes em C 24
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exemplo [3]
#include <stdio.h>
int * getRandom( ) {
static int r[10];
int i;
srand( (unsigned)time( NULL ) ); //randomize
for ( i = 0; i < 10; i++) {
r[i] = rand();
printf( "r[%d] = %d\n", i, r[i]);
}
return r;
}
Newton Spolaôr Vetores e matrizes em C 25
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exemplo [3]
int main () {
int *p;
int i;
p = getRandom();
for ( i = 0; i < 10; i++ ) {
printf( "*(p + %d) : %d\n", i, *(p + i));
}
return 0;
}
Newton Spolaôr Vetores e matrizes em C 26
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Um possível resultado [3]
r[0] = 313959809
r[1] = 1759055877
r[2] = 1113101911
r[3] = 2133832223
r[4] = 2073354073
r[5] = 167288147
r[6] = 1827471542
r[7] = 834791014
r[8] = 1901409888
r[9] = 1990469526
*(p + 0) : 313959809
*(p + 1) : 1759055877
*(p + 2) : 1113101911
...
Newton Spolaôr Vetores e matrizes em C 27
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exercício 1 [4]
Faça uma função que carregue dois vetores A e B, com
cinco elementos numéricos cada um, e que calcule o
produto escalar algébrico dos dois vetores
Produto escalar entre vetores de 5 elementos:
A.B =
∑5
i=1 aibi = a1b1 + a2b2 + ... + a5b5
Não esqueça de criar o programa principal que chama
essa função
Newton Spolaôr Vetores e matrizes em C 28
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exercício 2 [2]
Crie uma função f1, sem retorno, que leia um vetor com
oito elementos inteiros, calcule e preencha dois vetores
passados como parâmetros por referência
O primeiro vetor deve conter os números positivos,
enquanto o segundo deve conter os negativos
Lembre que cada vetor resultante pode possuir de 0 até 8
elementos
Crie também uma função f2, sem retorno, para imprimir
um vetor passado como parâmetro
Por fim, crie o programa principal que chama f1 e f2, de
modo a carregar e imprimir os vetores mencionados
Newton Spolaôr Vetores e matrizes em C 29
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exercício 3 [2]
Escreva uma função sem retorno que carregue dois
vetores X e Y, com dez elementos cada um, sendo que
cada vetor vai simular um conjunto (grupo sem elementos
repetidos)
Calcule e mostre X ∪ Y – união dos conjuntos X e Y
Newton Spolaôr Vetores e matrizes em C 30
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores unidimensionais
Exercícios
Exercício 4 [2]
Crie uma função que carregue um vetor de 10 elementos
inteiros e retorne esse vetor com os mesmos elementos,
mas em ordem crescente
Para realizar a ordenação, utilize o algoritmo bubble sort
Percorra o vetor, comparando o iésimo elemento do vetor
com seu sucessor (i+1); se a ordem não for a desejada,
troque as posições dos elementos
A ideia é comparar e trocar elementos adjacentesaté que
todos estejam ordenados
Repita o processo com os primeiros n-1 itens, depois com
os n-2 itens, até que reste apenas um item
Newton Spolaôr Vetores e matrizes em C 31
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Sumário
1 Introdução
2 Vetor unidimensional
3 Vetor bidimensional (matriz)
4 Considerações finais
Newton Spolaôr Vetores e matrizes em C 32
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Diferença entre vetor uni e bidimensional em C
Os conceitos apresentados nesta aula para vetor
unidimensional em C se aplicam também para vetor
bidimensional (matriz)
Isso ocorre porque uma matriz é implementada como um
vetor de 2 vetores
Ainda assim, é necessário destacar diferenças em termos
de sintaxe, as quais podem ser observadas nos próximos
slides
Newton Spolaôr Vetores e matrizes em C 33
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Iniciação de matrizes
Para iniciar o vetor bidimensional exi2 com M=3 linhas e
N=10 colunas, uma das seguintes alternativas pode ser
adotada
Alternativa 1: iniciação por um único comando
int exi2[3][10] = {
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} , /* linha 0 */
{10, 11, 12, 13, 14, 15, 16, 17, 18, 19} ,
{20, 21, 22, 23, 24, 25, 26, 27, 28, 29} ,
};
Newton Spolaôr Vetores e matrizes em C 34
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Iniciação de matrizes
Para iniciar o vetor bidimensional exi2 com M=3 linhas e
N=10 colunas, uma das seguintes alternativas pode ser
adotada
Alternativa 2: M x N leituras de dados ou atribuições
#include <stdio.h>
int main()
{
int i; int exi2[3][10]; //declaração de matriz
for (i=0;i<3;i++){ //percorre linhas
for (j=0;j<10;j++){ //percorre colunas
printf("Digite o elemento %d,%d:",i,j);
scanf("%d",&exi2[i][j]); //lê elemento
}
Newton Spolaôr Vetores e matrizes em C 35
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Iniciação de matrizes
Para iniciar o vetor bidimensional exi2 com M=3 linhas e
N=10 colunas, uma das seguintes alternativas pode ser
adotada
Alternativa 2: M x N leituras de dados ou atribuições
//continuação do código
} //final do for (i=0...)
printf("O primeiro elemento foi: %d\n",exi2[0][0]);
//imprime exi[0][0]
return 0;
}
Newton Spolaôr Vetores e matrizes em C 36
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Atribuição de valores
Dado que exi2 seja um vetor bidimensional de
MxN=3x10=30 elementos inteiros, é possível atribuir valor
a cada um dos seus elementos
Exemplo: atribuição do valor 45 ao primeiro elemento
exi2[0][0]=45;
Newton Spolaôr Vetores e matrizes em C 37
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Consulta de valores
Exemplo: consulta dos MxN elementos de uma matriz
#include <stdio.h>
int main()
{
int i,j; int foo [3][10]; //declaração
//atribuição de MxN valores à matriz
for (i=0;i<3;i++){ //percorre linhas
for (j=0;j<10;j++){ //percorre colunas
printf("Elemento %d,%d e: %d\n",i,j,foo[i][j]);
}
}
Newton Spolaôr Vetores e matrizes em C 38
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Consulta de valores
Exemplo: consulta dos MxN elementos de uma matriz
//continuação do código
return 0;
}
Newton Spolaôr Vetores e matrizes em C 39
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Passagem de argumento vetor como parâmetro [3]
Por questão de projeto do C, somente uma abordagem é
possível para matrizes sem adaptações adicionais
Abordagem: matriz de tamanho definido
Obs.: note o envio do número de linhas e de colunas como
parâmetro
Exemplo: função sem retorno com uma matriz de inteiros
como parâmetro
void myFunction(int param[3][10], int s1, int s2) {
//...
}
Newton Spolaôr Vetores e matrizes em C 40
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exemplo da passagem de matriz como parâmetro
void printArray(int arr[2][2],int s1,int s2) {
int i,j;
printf("Impressao de matriz %dx%d\n", s1,s2);
for (i = 0; i < s1; i++) {
for (j = 0; j < s2; j++) {
printf("%d,",arr[i][j]);
}
printf("\n");
}
}
Como implementaria a função cleanMatrix?
Newton Spolaôr Vetores e matrizes em C 41
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Chamada à função previamente definida
int main()
{
double a; int mfoo[2][2]; //declaração de matriz
for (i=0;i<2;i++){
for (j=0;j<2;j++){
scanf("%d",&mfoo[i][j]);
}
}
printMatrix(mfoo,2,2);
return 0;
}
Newton Spolaôr Vetores e matrizes em C 42
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Matriz como retorno de função [3]
Por questão de projeto em C, não é possível retornar uma
matriz por meio de uma função
A alternativa é definir a matriz a ser preenchida na função
como um parâmetro por referência
Naturalmente, a mesma ideia pode ser aplicada para o
vetor unidimensional
Exemplo: função que preenche uma matriz de reais
void myFunction(double param[2][2],int s1,int s2) {
//...
}
Newton Spolaôr Vetores e matrizes em C 43
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exemplo completo [3]
#include <stdio.h>
#include <stdlib.h>
void getRandom(double r[2][2], int s1, int s2) {
int i,j;
srand( (unsigned)time( NULL ) ); //randomize
for ( i = 0; i < s1; i++) {
for ( j = 0; j < s2; j++) {
r[i][j] = (double)rand()/(double) RAND_MAX;
printf("r[%d][%d]=%lf\n",i,j,r[i][j]);
}
}
}
Newton Spolaôr Vetores e matrizes em C 44
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exemplo completo [3]
int main () {
double p[2][2];
int i,j;
getRandom(p,2,2);
for ( i = 0; i < 2; i++) {
for ( j = 0; j < 2; j++) {
printf("p[%d][%d]=%lf\n",i,j,p[i][j]);
}
}
return 0;
}
Newton Spolaôr Vetores e matrizes em C 45
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exercício 1 [2]
Faça uma função, sem retorno, que carregue uma matriz
2x2 de números reais e mostre uma matriz resultante que
será a matriz digitada multiplicada pelo menor elemento
da matriz
Após, no programa principal, realize múltiplas chamadas à
essa função até que o usuário envie um valor específico,
pré-determinado, para encerrar o programa
Newton Spolaôr Vetores e matrizes em C 46
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exercício 2 [2]
Crie uma função sem retorno que preenchauma matriz
10x4 com as notas de 10 alunos em 4 provas
Use o gerador de números randômicos para gerar valores
entre 0 e 1, e após multiplique por 100 para transformar os
valores para escala [0,100]
Após, crie outra função para imprimir um relatório com o
número do aluno (número da linha + 1) e a prova em que
cada aluno obteve maior nota
Exiba também a nota média da turma
Newton Spolaôr Vetores e matrizes em C 47
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Algumas operações sobre vetores bidimensionais
Exercícios
Exercício 3 [2]
Escreva uma função sem retorno para verificar se uma
matriz 4x4 com números inteiros é simétrica ou não
Uma matriz é simétrica se A[i,j] = A[j,i] para todo i e j
Não esqueça da chamada no programa principal
Newton Spolaôr Vetores e matrizes em C 48
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Considerações finais
1 Introdução
2 Vetor unidimensional
3 Vetor bidimensional (matriz)
4 Considerações finais
Newton Spolaôr Vetores e matrizes em C 49
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Considerações finais
Nesta aula foram apresentados conceitos relacionados a
vetor simples
Vetor unidimensional
Vetor bidimensional (matriz)
Também foram resolvidos vários exercícios envolvendo
esse conceito
Newton Spolaôr Vetores e matrizes em C 50
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Para praticar um pouco mais... [2]
Crie um procedure que receba como entrada uma matriz
12x4 com os valores de venda de uma loja, onde cada
linha representa um mês do ano e cada coluna uma
semana do mês
Calcule e mostre
O total vendido em cada mês do ano, mostrando o nome
do mês por extenso
O total vendido em cada semana durante todo o ano
O total vendido pela loja no ano
Newton Spolaôr Vetores e matrizes em C 51
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Contato
newtonsp.unioeste@gmail.com
Newton Spolaôr Vetores e matrizes em C 52
Introdução
Vetor unidimensional
Vetor bidimensional (matriz)
Considerações finais
Referências bibliográficas
[1] D. F. Wolf, “Algoritmos,” http://wiki.icmc.usp.br/index.php/Scc-101,
2014, notas didáticas.
[2] A. F. G. Ascencio and E. A. V. de Campos, Fundamentos da
Programação de Computadores - Algoritmos, Pascal, C/C++ e
Java, 2nd ed. Prentice Hall, 2007.
[3] Tutorialspoint, “C - data types,”
http://www.tutorialspoint.com/cprogramming/c_data_types.htm,
2014.
[4] Wikipedia, “Produto escalar,”
https://pt.wikipedia.org/wiki/Produto_escalar, 2016.
Newton Spolaôr Vetores e matrizes em C 53
	Introdução
	Aula anterior em um breve olhar
	Motivação para novos tipos de dados
	Objetivo geral desta aula
	Vetor unidimensional
	Algumas operações sobre vetores unidimensionais
	Exercícios
	Vetor bidimensional (matriz)
	Algumas operações sobre vetores bidimensionais
	Exercícios
	Considerações finais

Outros materiais

Outros materiais