AEDI - Lista Ponteiros
CURSO SISTEMAS DE INFORMAÇÃO Disciplina: Algoritmos e Estruturas de Dados I Professor: Renê Gusmão Turma: 2º Período
Aluno: Data: 10/11/14
3ª Lista de Exercícios
1. Quais serão os valores de x, y e p ao final do trecho de código abaixo? int x, y, *p;
a. y = 0;
b. p = &y;
c. x = *p;
d. x = 4;
e. (*p)++;
f. --x;
g. (*p) += x;
Y=0
P=0
X=0
X=4
*p=1,y=1
X=3
*p=4,y=4
2. Escreva uma função mm que receba um vetor inteiro v[0..n-1] e os endereços de duas variáveis inteiras, digamos min e max, e deposite nessas variáveis o valor de um elemento mínimo e o valor de um elemento máximo do vetor. Escreva também uma função main que use a função mm.
3. Suponha que v é um vetor. Descreva a diferença conceitual entre as expressões v[3] e v + 3.
Como “v” nos retorna o endereço do primeiro elemento de um vetor, “v + 3” nos retorna o endereço do quarto elemento. Porém, v[3] nos retorna o quarto elemento! A diferença é que em um caso temos o elemento e em outro o endereço do elemento.
4. Crie uma função que receba uma string como parâmetro (de tamanho desconhecido) e retorne uma cópia da mesma. A assinatura da função deve ser: char *strcopy(char *str);
5. Escreva uma função que recebe uma string de caracteres e uma letra, devolve um vetor de inteiros contendo as posições (índices no vetor da string) onde a letra foi encontrada e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). Utilize o retorno de um vetor para retornar os índices e um ponteiro para guardar o tamanho do vetor.
6. Escreva uma função que determine a média e a situação de um aluno em uma disciplina. A função recebe como parâmetros as três notas de um aluno (p1, p2, e p3), seu número de faltas (faltas), o número total de aulas da disciplina (aulas) e o ponteiro para uma variável (media), conforme o seguinte protótipo:
char situacao(float p1, float p2, float p3, int faltas, int aulas,