Curso: Ciência da Computação Disciplina: Algoritmos e Estrutura de Dados I Professora: Luciana Balieiro Exercícios Complementares 1. Crie um vetor de 10 inteiros a partir da função malloc. Depois imprima o endereço de cada posição do vetor alocado dinamicamente. 2. Crie um programa para analisar um conjunto de amostras. Sendo que cada amostra pode ter tamanhos diferentes. Por exemplo: amostra1 = {1, 3, 2, 4}; amostra2 = {1,2}; amostra3={1,4,2,3,5,6}, etc. O programa deve solicitar ao usuário a quantidade de conjuntos de amostras, a quantidade de itens da amostra e cada amostra deve ser armazenada em um vetor. A cada conjunto deve ser calculada e exibida a média. 3. Seja o seguinte trecho de programa: int i=3,j=5; int *p, *q; p = &i; q = &j; Qual é o valor das seguintes expressões? a) p == &i; b) *p - *q c) *p/(*q)+7 4. Considere a seguinte declaração int *p; Explique a diferença entre: p++; (*p)++; *(p++); 5. Dado o programa abaixo, completar as Tabelas: main() { int i, j, *p_1, **p_2,**p_3; i = 4; j = 5; p_1 = &j; p_2 = &p_1; p_3 = p_2; } i j p_1 Variável 1000 1007 1030 Endereço 4 5 Conteúdo Expressão Resultado &i p_2 1053 **p_2 p_3 1071 *p_1 6. Faça um programa ler dois números. Crie uma função que receba esses números por referência e os coloque em ordem crescente. 7. Faça um programa que leia um texto. Crie uma função que converta este texto para maiúscula. O texto deve ser passado para função por referência e não ser utilizada nenhuma função já pronta para transformar a letra em maiúscula. 8. Considerando a declaração int lista[] um ponteiro para um vetor com {2,4,1,3} valores, qual será a saída produzida por printf("\n%d\n", *lista+1);? 9. Quais serão os valores de x, y e p ao final do trecho de código abaixo? int x, y, *p; y = 0; p = &y; x = *p; x = 4; (*p)++; --x; (*p) += x 10. Os programas (trechos de código) abaixo possuem erros. Apresente a solução correta para cada caso. a) void main() { int x, *p; x = 100; p = x; printf(“Valor de p: %d.\n”, *p); } b) void troca (int *i, int *j) { int *temp; *temp = *i; *i = *j; *j = *temp; } c) char *a, *b; a = "abacate"; b = "uva"; 11. Escreva uma função mm que receba um vetor inteiro v[n] e os endereços de duas variáveis inteiras, digamos min e max, deposite nessas variáveis o valor do elemento mínimo e o valor do elemento máximo do vetor. Escreva também uma função main que use a função mm. 12. Escreva uma função que recebe uma string de caracteres e uma letra e 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 como um vetor de índices e um ponteiro para guardar o tamanho do vetor. Crie uma função main para testar. A assinatura da função deve ser: int *busca_caractere(char *str, char c, int *pn); 13. Escrever um programa que lê duas cadeias s1 e s2 e retorna uma nova cadeia s3 que contém todos os caracteres que aparecem em s1 e em s2.