Exercicios

Considere que nos exercicios seguintes, todas as strings têm no máximo 80 caracteres (incluindo o caracter de fim de string).

1. (Palíndromo) Escreva uma função que recebe uma string como argumento e verifica se a string é um palíndromo ou não. Uma palavra é um palíndromo se se ler da mesma maneira da esquerda para a direita e vice-versa (por exemplo "AMA" é um palíndromo).

2. (Apaga Caracter) Escreva uma função que recebe como argumentos uma string e um caracter e remove todas as ocorrências do caracter da string. Escreva a string resultante no terminal.

3. (Concatena Strings) Escreva uma função que concatena duas strings. A função recebe 2 argumentos, a string destino e a string fonte. A função adiciona ao fim da string destino o conteúdo da string fonte. Assuma que a string destino tem espaço suficiente para guardar a 2ª string. A função retorna o tamanho da string destino, após a concatenação.

4. (Leitura e Escrita de Strings) Escreva uma função que lê caracteres do teclado, caracter a caracter, até encontrar o caracter '\n' ou EOF. A função recebe o numero máximo de caracteres a ler e a string onde devem ser guardados e devolve o número de caracteres lidos. Usando esta função, escreva um programa que lê uma string e que escreve a string lida no terminal. Use a função getc() para ler os caracteres do teclado.

Considere que nos exericios seguintes os vectores têm dimensão especificada por uma constante NUMELEMS.

5. (Leitura e Escrita de Vectores) Escreva um programa que leia um vector de reais do teclado cujo tamanho é o valor especificado pela constante NUMELEMS e escreva depois no terminal os valores guardados. Implemente as funções void leVector (float[] v, int size) e void escreveVector(float[] v, int size);

6. (Soma dos elementos de um vector) Escreva um programa que calcule a soma dos elementos de um vector de números cujo tamanho é o valor especificado pela constante NUMELEMS. Implemente a função float somaElementosVector(float[] v, int size); e use a função void leVector (float[] v, int size) já implementada.

7. (Média dos elementos de um vector) Escreva um programa que calcule a média aritmética dos elementos de um vector de reais. Implemente a função float mediaElementosVector (float[] v, int size); e utilize as funções void leVector(float[] v, int size) e float somaElementosVector(float[] v, int size) já implementadas.

8. (Posição dos elementos máximo e mínimo de um vector) Escreva um programa que calcule a posição dos elementos máximo e mínimo de um vector de inteiros cujo tamanho é o valor especificado pela constante NUMELEMS.  Implemente as funções void lerVector (int[] v, int size); int posicaoMaximoVector(int[] v, int size); e int posicaoMinimoVector(int[] v, int size);.

9. (Elementos máximo e mínimo de um vector) Modifique o programa anterior por forma a mostrar os elementos máximo e mínimo de um vector.

10. (Soma de vectores com o mesmo tamanho) Escreva um programa que adicione dois vectores de reais com o mesmo tamanho especificado pela constante NUMELEMS e escreva no terminal o vector resultado. Por exemplo, se os vectores forem [1.0 2.2 3.0] e [4.0 5.0 6.0], o vector resultado é [5.0 7.2 9.0]. Implemente a função void somaVectores(float[] v1, float[] v2, float[] res, int size); e utilize as funções void leVector (float[] v, int size); e void escreveVector(float[] v, int size); já implementadas.

11. (Soma de vectores com tamanhos diferentes) Reescreva o programa anterior por a permitir que a função somaVectores funcione com vectores de tamanhos diferentes. Neste caso, a função passa a ser void somaVectores(float[] v1, float[] v2, float[] res, int size1, int size2);Por exemplo, se os vectores forem [1.0 2.2 3.0] e [4.0 5.0 6.0 1.0 3.0], o vector resultado é [5.0 7.2 9.0 1.0 3.0].

12. (Inversão vector) Escreva um programa que inverte um vector de floats e escreve o vector invertido no terminal. Implemente a função void inverteVector(float[] v, int size); e utilize as funções  void leVector(float[] v, int size) evoid escreveVector(float[] v, int size); já implementadas. Nota: o vector é alterado pela função inverteVector.