Prática 15 (Semana de 13/nov/2017-1)
Sumário: Strings. A instrução switch. Exercícios 43 a 45.
Em C chama-se string a um vetor de carateres com a particularidade de conter um caráter terminador especial '\0' para indicar o final da parte preenchida.
Para exemplificar, eis uma função que testa se um dado caráter "c" ocorre numa string "str". Repare que a função não precisa de receber o tamanho da string, já que o terminador dá essa informação de forma indireta.
bool pertence(char c, char str[])
for( i = 0 ; str[i] != '\0' ; i++ )
printf("%d\n", pertence('l', "ola ole"));
43 - Escreva uma função inteira chamada conta com dois parâmetros: uma string e um caráter. A função conta o número de vezes que o caráter indicado ocorre na string. (A função deve distinguir entre maiúsculas e minúsculas, mas isso até torna a função mais fácil de escrever.)
Depois escreva um programa completo para testar a função usando a string fixa "Education is what survives when what has been learned has been forgotten". O programa só pergunta ao utilizador qual caráter a pesquisar e depois escreve o resultado.
Use a seguinte constante e o seguinte tipo:
#define MAX_STRING	256
int contar_char(String str, char a)
String frase = "Education is what survives when what has been "
"learned has been forgotten";
printf("frase: '%s'.\nIndique a letra a contar:", frase);
printf("%d\n", contar_char(frase, a));
Repare, os dois cabeçalhos seguintes são equivalentes:
int contar_char(char str[], char a)
Q : 44 - Escreva uma função void chamada trocar com três parâmetros: uma string e dois carateres. A função altera diretamente a string, trocando todas as ocorrências do primeiro caráter pelo segundo caráter. Todos os restantes carateres ficam na mesma e, obviamente, o comprimento da string não muda. (A função deve distinguir entre maiúsculas e minúsculas, mas isso até a torna mais fácil de escrever.)
Depois escreva um programa completo para testar a função. O programa deve usar a string fixa "The quick brown fox jumps over the lazy dog". O programa só pede ao utilizador os dois carateres envolvidos na troca e depois escreve o resultado.
Introduza dois carateres encostados: ab
The quick brown fox jumps over the lbzy dog
45 - Copie o interpretador de comandos do final da aula teórica 8 e execute-o uma vez.
Depois complete o programa escrevendo a função de descodificação. (Há uma maneira de escrever esta função fazendo simplesmente uma chamada habilidosa à função de codificação. Teste bem o programa porque a primeira ideia que se costuma ter está errada.)
Depois adicione ainda um novo comando de Ajuda para listar e explicar os vários comandos à disposição do utilizador. É habitual os interpretadores de comandos disponibilizarem um comando deste género.