Aula 06 Introdução à Programação Matrizes Prof. Gustavo Callou gustavo.callou@ufrpe.br gcallou@gmail.com
Roteiro Matrizes Unidimensionais (Vetor) Bidimensionais String Exercícios Gustavo Callou DEINFO/UFRPE 2
Matriz Índice
Matriz coleção de variáveis de mesmo tipo que é referenciada por um nome comum. Índice meio de acessar os elementos específicos de uma matriz. A matriz mais comum em C é a de string. Em C, o elemento inicial de uma matriz tem índice igual a zero. Exemplo de aplicação: armazenar as notas de 50 alunos.
Matrizes Unidimensionais: Declaração: Tipo nome_var[tamanho]; Ex: Matriz de sete characteres começando pelo endereço 1000.
Matrizes Unidimensionais: Declaração: Tipo nome_var[tamanho]; Ex2: float nota[50]; Assim essa matriz vai de nota[0] até nota[49]. void main(void){ float nota[10]; //reserva 10 elementos float int i; } for(i=0; i<10; i++){ nota[i] = i*2; } nota[0]=0;
Importante: cuidado para não tentar acessar um indice que não foi declarado para a matriz, isso pode fazer com que um valor seja declarado a uma outra posição da memória. Ex: main() { int ar[10], j; for (j = 0; j <= 10; j++) { ar[j] = 0; } }
Operador sizeof
Operador sizeof usado para se saber o tamanho, em bytes, ocupados por determinada variável. Ex: float notas[4*10 + 5]; sizeof(notas); sizeof(notas[0]);
Operador sizeof usado para se saber o tamanho, em bytes, ocupados por determinada variável. Ex: float notas[4*10 + 5]; sizeof(notas); /* valor 45 vezes o número de bytes ocupado por uma variável do tipo float */ sizeof(notas[0]); /* espaço ocupado pelo tipo float */
Inicialização de matrizes int meuarranjo1[5]; int meuarranjo2[5] = {1, 2, 3, 4, 5}; Obs: Quando não se inicializa os valores da matriz, os valores presentes em cada elemento são indefinidos.
Um uso muito comum de matrizes unidimensionais é como string de caracteres. Em C, uma string é definida como um matriz de caracteres terminada por null (\0). Assim, deve-se declarar o tamanho da matriz um elemento a mais para o \0. Ex: como declarar uma variavel para receber a palavra futebol?
Um uso muito comum de matrizes unidimensionais é como string de caracteres. Em C, uma string é definida como um matriz de caracteres terminada por null (\0). Assim, deve-se declarar o tamanho da matriz um elemento a mais para o \0. Ex: como declarar uma variavel para receber a palavra futebol? char s[8] ;
Funções basicas para manipulação de strings:
Exemplo: Comando para pegar os dados digitados pelo usuario.
Exemplo: Strcmp() retorna falso se as strings forem iguais. Assim, deve-se usar o!
Matriz unidimensional (vetor) int meuarranjo1[5]; char s[10]; Inicialização de Vetor Tipo nome [tamanho1] = {valores} Ex: int i[10] = {1,2,3,4,5,6,7,8,9,10}; char str[14] = Eu gosto de C ; char str[14] = E, u,, g, o, s, t, o,, d, e,, C ; char s[] = Eu gosto de C ; Obs: printf( %d, sizeof(s));
Preenchendo um Vetor de inteiros int vet[10]; int i; for (i=0; i<10; i++){ vet[i]=i+1; } for (i=0; i<10; i++){ printf( %d, vet[i]); }
Exercício 1 ) Fazer um programa para preencher um vetor de 10 posições com as notas dos alunos de uma turma. Em seguida, o programa deve ler o vetor e imprimir: a media aritmética dos 10 alunos, a maior e a menor nota.
Exercícios 2) Sendo V o vetor abaixo e as variaveis X=2 e Y=4, quais os valores de: 2 6 8 4 10 9 1 3 33 14 0 1 2 3 4 5 6 7 8 9 a) V[X+1] b) V[X] + 1 c) V[X+Y] d) V[8-V[2]] e) V[V[V[7]]]
Exercícios 3) Construa um programa em C que preenche um vetor de inteiros de 100 números, colocando 0 nas posições indexadas por numero par e 1 nas posições indexadas por numero ímpar. 4) Construa um programa em C que soma dois vetores inteiros e imprime o resultado da soma. 5 ) Construa um programa em C que multiplique os valores de um vetor de reais de 20 posições pelos valores (em ordem inversa) de um outro vetor de reais de 20 posições. Os resultados das multiplicações devem ser armazenados num terceiro vetor em ordem direta.
Exercícios 6) Faça um programa que determine o maior e o menor elementos de um vetor 7) Faça um algoritmo que faz o shift dos elementos de um vetor para a direita. A operação de shift é descrita como o deslocamento de todos os elementos de uma posição. Exemplo: 1 3 9 4 2 depois do shift fica 2 1 3 9 4
Exercícios 8) Faça um programa que dado o vetor unidimensional [2; 4; 35; 50; 23; 17; 9; 12; 27; 5] retorne: a. maior valor b. média dos valores c. os valores dispostos em ordem crescente 9) Faça uma função que retorne a posição de um dado caracter dentro de uma string. 19:22 Gustavo Rau de Almeida Callou 23
Exercícios 10) Faça um rotina que remova um caracter de uma string do tipo char Str[100], dada a posição do caracter. 11) Faça uma rotina que insira um caracter em uma string do tipo char Str[100], dada a posição do caracter. 12) Faça um programa que dado 2 palavras, determine: a. Se as palavras são iguais; b. Caso as palavras sejam diferentes, qual delas tem maior comprimento (não esquecer a possibilidade de existirem palavras diferentes de mesmo tamanho); c. Verifique se a segunda palavra é uma sub string da primeira: Exemplo: Palavra 1= casamento Palavra 2 = casa 19:22 Gustavo Rau de Almeida Callou 24
C da suporte a matrizes multidimensionais Matrizes bidimensionais int num[1][2] /* matriz com 2 elementos*/ int num[2][2] /* matriz com 4 elementos*/ int num[2][3] /* matriz com 6 elementos*/ int num[3][3] /* matriz com 9 elementos*/ 19:30 Gustavo Rau de Almeida Callou 25
Bidimensionais (matrizes) Manipulacao MATRIZ 0 0 1 2 3 4 5 6 7 MATRIZ[2][3] 1 2 3 4 5 6 7
Exemplo de uma matriz bidimensional
Matrizes multidimensionais Declaração: Tipo nome [tamanho1][tamanho2] [tamanhon]
Exercícios 13) Crie um programa capaz de ler os dados de uma matriz quadrada de inteiros. Ao final da leitura o programa deverá imprimir o número da linha e da coluna que contém o menor dentre todos os números lidos. 14) Escreva um programa que leia uma matriz n x m do usuário e a transforme em um vetor unidimensional de n.m posições 19:28 Gustavo Rau de Almeida Callou 29