EXERCÍCIOS DE COMPUTAÇÃO Prof. Jorge Habib /Teresinha Arnauts / Itamar Nieradka 1. UNIOESTE/PTI Implementar 𝒊𝒔𝒗𝒐𝒈𝒂𝒍 que retorna 𝑇𝑅𝑈𝐸 (1) se o parâmetro for um caractere que representa uma vogal e 𝐹𝐴𝐿𝑆𝐸 (0) em caso contrário. int isvogal (char c); 2. Implementar 𝒗𝒐𝒈𝒂𝒍𝒖𝒑𝒓 que converte as vogais de uma string para maiúsculo. A função retorna a quantidade de vogais convertidas. int vogalupr (char *s); 3. Implementar 𝒖𝒑𝒓𝒍𝒘𝒓 que converte alternadamente os caracteres alfabéticos de uma string em maiúsculo e minúsculo. O argumento será uma string contendo entre 1 e 50 caracteres ('A' - 'Z', 'a' - 'z' ou espaço ''), inclusive, ou, pelo menos, uma letra ('A' - 'Z', 'a '-'z'). Os espaços em branco deverão ser preservados. int uprlwr (char *s); 4. Implementar 𝒅𝒆𝒍𝒗𝒐𝒈𝒂𝒊𝒔 que dada uma string 𝑠𝑟𝑐 preenche a string 𝑑𝑠𝑡 com os caracteres de 𝑠𝑟𝑐 que não são vogais. Como resultado a função retorna 𝑑𝑠𝑡. char *delvogais (char *dst, char *src); 5. Implementar 𝒎𝒂𝒕𝒄𝒉 que dada uma string 𝑠 contendo sequência apenas de caracteres [ ′(′ ′)′] abre e fecha parênteses, retorna TRUE se há um perfeito casamento entre eles, conforme as regras de expressões. int match (char *s); 6. Implementar 𝒊𝒔𝒑𝒓𝒊𝒎𝒐 que retorna 𝑇𝑅𝑈𝐸 se um determinado número é primo e 𝐹𝐴𝐿𝑆𝐸 em caso contrário. int isprimo (int a); 7. Implementar 𝒅𝒊𝒈𝒊𝒕𝒔 que retorna a quantidade de dígitos decimais de um número inteiro. Considerar que o número 0 tem um dígito. int digits (int x); 8. Implementar 𝒍𝒐𝒂𝒅 que preenche o vetor 𝑣 com os números inteiros fornecidos via teclado. A quantidade de números é armazenada no endereço fornecido por 𝑛. int load (int *v, int *n); 9. Implementar 𝒑𝒐𝒔𝒙 que retorna a posição da primeira ocorrência que um determinado inteiro 𝑥 se encontra no vetor 𝑣 com 𝑛 elementos. No caso de 𝑥 não ser encontrado em 𝑣 a função deverá retornar −1. int posx (int *v, int n, int x); 10. Implementar 𝒅𝒆𝒍𝒓𝒆𝒑 que preenche o vetor 𝑣𝑏 com os elementos de 𝑣𝑎, porém sem repetição. A quantidade de elementos inseridos em 𝑣𝑏 deve ser guardada no endereço indicado por 𝑛𝑏. Sugere-se utilizar a função 𝑝𝑜𝑠𝑥 como apoio. int delrep (int *va, int na, int *vb, int *nb); 11. Implementar 𝒔𝒉𝒐𝒘𝒗𝒆𝒕 que imprime na tela cada um dos 𝑛 elementos de 𝑣. int showvet (int *v, int n); 12. Implementar 𝒄𝒐𝒑𝒚 que dada uma string 𝑠𝑟𝑐 é efetuada a cópia para a string 𝑑𝑠𝑡 dos 𝑐 caracteres de 𝑠𝑟𝑐 a partir da posição 𝑖𝑛𝑖, inclusive. Como resultado a função retorna 𝑑𝑠𝑡. EXERCÍCIOS DE COMPUTAÇÃO Prof. Jorge Habib /Teresinha Arnauts / Itamar Nieradka UNIOESTE/PTI char *copy (char *dst, char *src, int ini, int c); 13. Implementar 𝒔𝒕𝒓𝒕𝒐𝒗𝒆𝒕 que preenche um vetor 𝑣 com os números inteiros 𝑥𝑥𝑥 extraídos de uma string cujo padrão é dado por: “[𝒙𝒙𝒙] [𝒙𝒙𝒙] [𝒙𝒙𝒙] . . . [𝒙𝒙𝒙]” O vetor 𝑣 deverá ser preenchido com o equivalente numérico do texto contido entre colchetes. A quantidade de dígitos dos números pode variar. int *strtovet (int *v, int *n, char *s); 14. Implementar uma função que armazena em um vetor de inteiros 𝑣 os índices de onde um determinado caractere 𝑐ℎ aparece em uma string s. int poschar (char *s, char ch, int *v, int *n); 1 2 012345678901234567890123456789 “engenharia eletrica – unioeste” ‘e’ 0 3 11 13 26 29 6 s ch v n in out 15. Escrever functions para preencher uma determinada matriz de ordem 𝑁 conforme os padrões que seguem: 1 0 0 0 [0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1] 0 1 b) 2 3 [4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4] 1 0 d) 0 0 [0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1] 1 1 1 1 [1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1] a) e) c) 0 0 0 0 [1 f) 0 5 10 15 [20 0 0 0 1 0 0 0 1 0 0 1 6 11 16 21 0 1 0 0 0 1 0 0 0 0] 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24] 16. Implementar uma função que retorna a soma dos elementos da diagonal principal de uma matriz quadrada 𝑚𝑛×𝑛 . int somadiag (int m[][MAXC], int n); 17. Dizemos que uma matriz inteira 𝐴𝑛×𝑛 é uma matriz de permutação se em cada linha e em cada coluna houver 𝑛 − 1 elementos nulos e um único elemento igual a 1. Exemplo:1 A matriz abaixo é de permutação 0 0 [ 1 0 1 0 0 0 0 1 0 0 0 0 ] 0 1 A matriz abaixo não é de permutação 2 [−1 0 −1 2 0 0 0] 1 Pede-se: Dada uma matriz inteira 𝐴𝑛×𝑛 , verificar se 𝐴 é de permutação. 1 Parte dos exercícios que seguem foram extraídos de http://www.ime.usp.br/~macmulti/exercicios/ EXERCÍCIOS DE COMPUTAÇÃO Prof. Jorge Habib /Teresinha Arnauts / Itamar Nieradka UNIOESTE/PTI 18. Dada uma matriz 𝐴𝑚×𝑛 , imprimir o número de linhas e o número de colunas nulas da matriz. Exemplo: 𝑚 = 4 e 𝑛 = 4 1 0 2 3 4 0 5 6 [ ] 0 0 0 0 0 0 0 0 tem 2 linhas nulas e 1 coluna nula. 19. Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais. Exemplo: A matriz 8 [4 3 0 5 10 7 6] 2 é um quadrado mágico. Dada uma matriz quadrada 𝐴𝑛×𝑛 , verificar se 𝐴 é um quadrado mágico. 20. Dadas duas matrizes 𝐴𝑙𝑎×𝑐𝑎 e 𝐵𝑙𝑏×𝑐𝑏 efetuar o produto matricial gerando resultado em 𝐶𝑙𝑐×𝑐𝑐 . 21. Implementar 𝒎𝒂𝒕𝒕𝒐𝒗𝒆𝒕 que preenche o vetor 𝑣 com os elementos da matriz 𝑚𝑙𝑖𝑛×𝑐𝑜𝑙 . A quantidade de elementos inseridos em 𝑣 deve ser guardada no endereço indicado por 𝑛. A função retorna 𝑣. int *mattovet (int *v, int *n, int m[][MAXC], int lin, int col); 22. Implementar 𝒗𝒆𝒕𝒕𝒐𝒎𝒂𝒕 que preenche a matriz 𝑚𝑙𝑖𝑛×𝑐𝑜𝑙 com os elementos dados pelo vetor 𝑣. Se o tamanho do vetor não for suficiente para preencher a matriz, o vetor deverá ser percorrido novamente. Se o vetor contiver mais elementos do que o previsto para a matriz, os excedentes deverão ser desconsiderados. void vettomat (int m[][MAXC], int lin, int col, int *v, int n,); APOIO: char *strcpy (char *dest, char *src); Retorna o comprimento do string s terminado com 𝑁𝑈𝐿 (‘\0’); concatena strings => dest = dest + src. Retorna dest. Retorna o endereço da primeira ocorrência de um char em um. O caracter 𝑁𝑈𝐿 é considerado parte da string. Retorna 𝑁𝑈𝐿𝐿 se não encontrar. Retorna o endereço da primeira ocorrência de um char em uma string na busca reversa. O caracter 𝑁𝑈𝐿 é considerado parte da string. Retorna 𝑁𝑈𝐿𝐿 se não encontrar. copia string => dest = src; e retorna dest. int toupper ( int c ); Converte minúsculo para maiúsculo int tolower ( int c ); char *strupr (char *s); Converte maiúsculo para minuscule Se s1 < s2 retorna negativo Se s1 == s2 retorna zero Se s1 > s2 retorna positivo converte a string para maiúsculo. Retorna s. char *strlwr (char *s); converte a string para minúsculo. Retorna s. char *strset (char *s, char c); preenche uma string com um char. Retorna s. char *strrev (char *s); inverte a string. Retorna s. int strlen (char *s); char *strcat (char *dest, char *src); char *strchr (char *s, char c); char *strrchr (char *s, char c); int strcmp (char *s1, char *s2);