![]() |
|
Código-Fonte Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesTenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
|
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: 2125 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:
#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 |
|
JavaScript - Como obter entrada do usuário em seus códigos JavaScript usando a função prompt() do objeto window |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






