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 C

Quantidade de visualizações: 1815 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.
Resposta/Solução:

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;
}


Link para compartilhar na Internet ou com seus amigos:

C ::: Dicas & Truques ::: Strings e Caracteres

Como concatenar apenas parte de uma string à outra string usando a função strncat() da linguagem C

Quantidade de visualizações: 9829 vezes
Muitas vezes precisamos adicionar à uma string apenas alguns caracteres de outra, ou seja, não queremos concatenar as duas strings completamente; apenas parte da segunda. Para isso podemos usar a função strncat(). Veja o protótipo e explicação desta função:

char *strncat(char *str1, const char *str2, size_t n);


Aqui a quantidade n de caracteres da string str2 será anexada ao final da string str1. O caractere de fim de string (null character) da str1 é sobrescrito durante a operação e anexado novamente assim que os caracteres desejados da str2 sejam copiados. Veja um exemplo:

----------------------------------------------------------------------
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>

int main(int argc, char *argv[])
{
  char texto[] = "Gosto muito de ";
  char palavra[] = "C++";

  /*
  Na segunda sequencia de caracteres nós temos "C++", mas
  queremos anexar à primeira sequencia apenas "C". Veja
  como isso é feito
  */

  strncat(texto, palavra, 1);

  // exibe o resultado
  puts(texto);

  system("pause");
  return 0;
}

Ao executar este códigos nós teremos o seguinte resultado:

Gosto muito de C


C ::: Dicas & Truques ::: Matemática e Estatística

Como arredondar valores de ponto-flutuante usando a função round() da linguagem C

Quantidade de visualizações: 17200 vezes
A função round() da linguagem C é usada quando precisamos arredondar um valor de ponto-flutuante (com casas decimais) para cima ou para baixo, de acordo com as seguintes regras:

a) Se a parte fracionária for igual ou maior que 0,5, o valor será arredondado para o menor inteiro maior que o valor fornecido à função (arredonda para cima).

b) Se a parte fracionária for menor que 0,5, o valor será arredondado para o maior inteiro menor que o valor fornecido à função (arredonda para baixo).

Para entender o funcionamento desta função, vamos considerar o valor 4.3. Ao aplicarmos a função round() a este valor, o retorno será 4.0. Isso pode ser comprovado no trecho de código abaixo:

----------------------------------------------------------------------
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>

int main(int argc, char *argv[])
{
  printf("O valor 4.3 arredondado usando round() e %f", 
    round(4.3));
  
  printf("\n\n");
  system("pause");
  return 0;
}

Ao executarmos este código teremos o seguinte resultado:

O valor 4.3 arredondado usando round() é 4.000000.


C ::: Dicas & Truques ::: Strings e Caracteres

Como escrever uma função concat() que reproduz a funcionalidade da função strcat() da linguagem C

Quantidade de visualizações: 11492 vezes
O C (C99, ANSI C) contém uma função strcat(), no header string.h, que permite concatenar duas strings. Para fins de estudo, segue abaixo o código completo para uma função concat(), que recebe duas strings, anexa a segunda à primeira e retorna um ponteiro para uma string contendo ambas:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

// uma função concat
char *concat(char *destino, const char *origem)
{
  // um ponteiro para a string de destino
  char *original = destino;

  // vai para o final da string de destino
  while(*original)
    original++;

  // anexa a string de origem
  while(*original++ = *origem++)
    ;

  // retorna o resultado
  return destino;
}


Veja como usar no trecho de código abaixo:

----------------------------------------------------------------------
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>

// uma função concat
char *concat(char *destino, const char *origem)
{
  // um ponteiro para a string de destino
  char *original = destino;

  // vai para o final da string de destino
  while(*original)
    original++;

  // anexa a string de origem
  while(*original++ = *origem++)
    ;

  // retorna o resultado
  return destino;
}

int main(int argc, char *argv[])
{
  char frase1[100] = "Gosto";
  char frase2[20] = " muito de C e Java.";
  char *resultado = concat(frase1, frase2);

  // exibe o resultado
  printf("%s", resultado);

  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Gosto muito de C e Java.


Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha 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

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 74 usuários muito felizes estudando em nosso site.