2007-04-24

Apontadores Exercícios

  1. Escreva a função com o protótipo void mult(int *v1, int *v2, int *v3, int n) que multiplica os vectores v1 e v2 elemento a elemento e coloca o resultado no vector v3. Os vectores têm comprimento n .(Ex (1,2,3)X(4,5,6)=(4,10,18)).

  2. Escreva a função com o protótipo int comp_vec(int *v1, int *v2, int n) que retorna 1 se os vectores v1 e v2 forem iguais e 0 se forem diferentes. Os vectores têm comprimento n.

  3. Escreva a função com o protótipo int is_ident(int *mat, int n) onde mat é uma matriz nxn. A função deverá retornar 1 se mat for a matriz identidade e 0 caso contrário. (Definição de Matriz Identidade)

  4. Escreva a função com o protótipo void comuns(int a[], int m, int b[], int n) onde a[] e b[] contêm respectivamente m e n elementos distintos ordenados por ordem crescente e sem repetição. A função deve imprimir por ordem crescente os elementos comuns aos 2 vectores. Por exemplo, para os vectores [1,3,4,7,8] e [2,3,4,6,8,9] deverá ser impresso 3 4 8.

  5. Escreva a função com o protótipo void sort_vec(int *vec, int n) que ordena os elementos do vector vec de n elementos por ordem crescente. Note que o vector pode conter elementos repetidos.

  6. Considere 2 vectores globais de strings char *proibidos[] e char *gratis[] que representam respectivamente os prefixos de números de telefone de utilização proibida e grátis. Ambas estas lista usam o valor NULL para indicar o fim da lista. Um exemplo:
    char *proibidos[] = {"23","2677",NULL};
    char *gratis[] = {"0800","11",NULL};
    Implemente uma função com o protótipo int classifica_numero(char *tel) que retorna respectivamente 1,0 ou -1 conforme respectivamente o número de telefone tel é proibido (algum proibidos[i] é prefixo dele), grátis (algum gratis[i] é prefixo dele) ou nem grátis nem proibido. Para o exemplo dado, temos que classifica_numero("234455666") retorna 1.
    Recorde que dadas duas palavras p e s, diz-se que p é prefixo de s, se e só se, existir uma palavra y (que pode ser vazia) tal que s = py.
    A função int classifica_numero(char *tel) deverá utilzar uma função auxiliar com o protótipo int prefixo(char *p, char *s) que retorna 1 se p é prefixo de s e 0 caso contrário.