Laboratório 2B
Exercício 3 – Anagramas
Dadas duas strings S e T, dizemos que S é um anagrama de T se podemos obter T rearranjando os caracteres de S. Por exemplo, "arco" é um anagrama de "caro", assim como "estudo" é um anagrama de "duetos".
Escreva uma função que determine se duas strings são anagramas.
Função a implementar
int anagrama(char S[], char T[]);A função deve retornar 1 se S e T forem anagramas e 0 caso contrário.
Considere que S e T contêm apenas letras minúsculas do alfabeto (a–z). As strings podem ter tamanhos diferentes. Sua função não deve modificar nenhuma das duas strings.
Exemplos
anagrama("arco", "caro")deve retornar:
1
Enquanto
anagrama("casa", "caso")deve retornar:
0
Observe também que a quantidade de vezes que cada letra aparece é importante. Por exemplo:
anagrama("aaab", "aabb")deve retornar:
0
Dica: não é necessário gerar os possíveis rearranjos de S. Pense em quais informações sobre as letras das duas strings são suficientes para decidir se uma pode ser obtida rearranjando a outra.
O CodeRunner será responsável por criar as strings e chamar a função. Portanto, envie apenas a implementação de anagrama, sem uma função main.
Exercício 4 – Maiúsculas e minúsculas
Escreva um programa que leia uma linha da entrada padrão e substitua cada letra minúscula pela letra maiúscula correspondente e cada letra maiúscula pela letra minúscula correspondente. Em seguida, imprima a string resultante. A linha de entrada poderá conter espaços, algarismos e outros caracteres, mas não terá caracteres acentuados. Caracteres que não sejam letras do alfabeto (a–z ou A–Z) devem permanecer inalterados.
A linha terá no máximo 100 caracteres, sem contar o caractere de quebra de linha ('\n') ao final da entrada.
Use fgets para ler a linha e puts para imprimir o resultado.
Por exemplo, para a entrada
Este e um Exemplo
o programa deve produzir
eSTE E UM eXEMPLO
Outro exemplo: para a entrada
UFABC 2026!
o programa deve produzir
ufabc 2026!
A função fgets normalmente armazena o caractere '\n' ao final da linha lida, quando há espaço suficiente no vetor. Como puts também imprime uma quebra de linha ao final, isso pode resultar em uma linha em branco adicional na saída. Você pode remover o '\n' da string antes de chamar puts, mas isso não é o objetivo principal deste exercício.
Neste exercício, não utilize as funções da biblioteca ctype.h, como toupper, tolower, isupper ou islower. O objetivo é praticar comparações e aritmética com caracteres.