Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres |
Como testar se duas palavras são anagramas uma da outra - Solução usando ordenação de strings - Desafio de Programação Resolvido em CQuantidade de visualizações: 2038 vezes |
|
Pergunta/Tarefa: Dadas duas palavras p1 e p2, escreva um código C que informa se uma palavra é anagrama da outra. Um anagrama é uma espécie de jogo de palavras criado com a reorganização das letras de uma palavra ou expressão para produzir outras palavras ou expressões, utilizando todas as letras originais exatamente uma vez. Para esta solução você deverá, obrigatoriamente, usar a ordenação das duas strings em ordem alfabética. Seu programa deverá exibir a seguinte saída: Informe a primeira palavra: perda Informe a segunda palavra: pedra As duas palavras são anagramas uma da outra. Veja a resolução com código comentado em C: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
// Esta função é usada para converter todos os caracteres
// para letras minúsculas
void letras_minusculas(char *string){
while(*string){
*string = tolower(*string);
string++;
}
}
// Esta função é usada para ordenar a string em ordem alfabética
void ordenar(char texto[]){
int temp = 0, i, j;
for(i = 0; i <strlen(texto) - 1; i++){
for(j = i + 1; j < strlen(texto); j++){
if (texto[i] > texto[j]) {
temp = texto[i];
texto[i] = texto[j];
texto[j] = temp;
}
}
}
}
int main(int argc, char *argv[]){
// variáveis usadas para resolver o problema
char palavra1[80], palavra2[80];
int i;
int anagramas = 1; // true
setlocale(LC_ALL,""); // para acentos do português
// vamos pedir para o usuário informar as duas palavras
printf("Informe a primeira palavra: ");
gets(palavra1);
printf("Informe a segunda palavra: ");
gets(palavra2);
// o primeiro passo é testar os tamanhos das duas strings
if (strlen(palavra1) != strlen(palavra2)){
anagramas = 0; // falso
}
else{
// vamos converter as duas strings para letras minúsculas
letras_minusculas(palavra1);
letras_minusculas(palavra2);
// agora ordenamos as duas strings em ordem alfabética
ordenar(palavra1);
ordenar(palavra2);
// percorremos todos os os caracteres da primeira string
for(i = 0; i < strlen(palavra1); i++) {
// os dois caracteres nas duas strings são diferentes?
if(palavra1[i] != palavra2[i]) {
anagramas = 0; // falso
}
}
}
if(anagramas){
printf("As duas palavras são anagramas uma da outra.");
}
else{
printf("As duas palavras não são anagramas uma da outra.");
}
printf("\n\n");
system("PAUSE");
return 0;
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





