Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
ECT1203 Linguagem de Programação 2012.1 Prof. Diego Rodrigues de Carvalho Profa. Idalmis Milián Sardina Prof. Luiz Eduardo Cunha Leite Prof. Marconi Câmara Rodrigues Prof. Marcelo Henrique Ramalho Nobre Aula 11 – Funções e Matrizes Universidade Federal do Rio Grande do Norte Escola de Ciências e Tecnologia Hora de silenciar o celular Manter o celular sempre desligado/silencioso quando estiver em sala de aula Nunca atender o celular em sala de aula Objetivo da Aula Mostrar passagem de vetores e matrizes como parâmetros de funções Resolver exercícios Esses são os objetivos da aula Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o nome de uma matriz para uma função não se cria uma cópia da matriz, a passagem é feita por referência. Na lista de parâmetros, pode-se declarar uma matriz unidimensional da seguinte forma: tipo nome [ ] Matrizes como argumento de funções A função strlen() calcula e retorna o comprimento de uma string passada como parâmetro. exemplo: int strlen(char S[]){ int N; for (N=0; S[N] != '\0'; N++); return N; } int main(){ char ch[50] = "Bom dia!”; cout << strlen(ch) << endl; return 0; } Note que não se usa o operador & na declaração da matriz na lista de parâmetros 5 Matrizes como argumento de funções Observação: Deve-se fornecer também o tamanho da matriz (quando o tipo for diferente de char) para que a função trabalhe corretamente. #include <iostream> using namespace std; void imprimir(int v[], int tam) { for (int n=0; n<tam; n++) cout << v[n] << " "; cout << "\n"; } int main (){ int vetor1[3] = {5, 10, 15}; int vetor2[5] = {2, 4, 6, 8, 10}; imprimir(vetor1, 3); imprimir(vetor2, 5); return 0; } exemplo: 6 #include <iostream> using namespace std; float calcula_media(float [], int); int main (){ int tam; float media, notas[200]; cout << "Qual o tamanho da turma? "; cin >> tam; cout << "Entre com as notas dos alunos: "; for(int i = 0; i < tam; i++) cin >> notas[i]; media = calcula_media(notas, tam); cout << "A media eh: " << media << endl; return 0; } float calcula_media(float notas[], int tamanho){ float media = 0; for(int i = 0; i < tamanho; i++) media += notas[i]; media = media/tamanho; return media; } exemplo: 7 Vetores locais a funções Como fazer uma função que recebe dois vetores de tamanho 10 como parâmetros e calcula o vetor soma? O espaço para guardar o resultado é alocado pela função chamadora. Assim, a função soma() recebe três vetores: dois com dados de entrada (A e B) e um para armazenar o resultado (C) void soma(int A[], int B[], int C[]){ for(int i=0; i<10; i++) C[i] = A[i]+B[i]; } Passando matrizes de duas dimensões Não importa quantas dimensões tem uma matriz, a passagem do endereço é feita de forma idêntica ao caso unidimensional Entretanto, a declaração da matriz na definição da função e no protótipo é feita da seguinte forma: tipo nome [ ][número de colunas] void funcao (int m[][4]) exemplo: Passando matrizes de duas dimensões O tamanho da segunda dimensão deve sempre ser informado para que a função possa determinar o endereço dos elementos da matriz. Ao tentarmos acessar o elemento A[2][3], a função determinante() sabe que o seu endereço é A+2*4+3 int determinante(int A[][4]); exemplo: Observação: Como não há verificação de limites, é importante fornecer a primeira dimensão da matriz para que a função não acesse posições inválidas. Exercício 1 Escreva uma função de protótipo: void mid(char origem[], char dest[], int inicio, int n); que copie os n caracteres a partir da posição início da string origem na string dest. Esses são os objetivos da aula Exercício 2 (a) Faça uma função MAX que recebe como entrada um inteiro n, uma matriz inteira Anxn e devolve três inteiros: k, Lin e Col. O inteiro k é o maior elemento de A e é igual a A[Lin,Col]. Exemplo: Se o elemento máximo ocorrer mais de uma vez, indique em Lin e Col qualquer uma das possíveis posições. (b) Faça um programa que, dado um inteiro n e uma matriz quadrada de ordem n, cujos elementos são todos inteiros positivos, imprime uma tabela onde os elementos são listados em ordem decrescente, acompanhados da indicação de linha e coluna a que pertencem. Havendo repetições de elementos na matriz, a ordem é irrelevante. Utilize obrigatoriamente a função da parte (a). Esses são os objetivos da aula
Compartilhar