Estou tendando fazer um programa que leia uma palara e retorna o numero de anagramas possiveis de fazer.
o problema esta na ultimafuncao do codigo onde eu montei uma struct para esta colocando a letra da palavra e a quantidade de vezes que ela aparece na palavra so que a funcao ao invés de me retorna a quantidade ela me retorna a quantidade ao quadrado e eu não sei o que fazer
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//tamanho do vetor de char para receber do usuario
const int tamanho=100;
//funcoes
int numAnagrama (char anag[]);
int fatorial (int n);
int vletrasIguais (char anag[]);
int pletrasIguais (char anag[]);
int main(int argc, char *argv[])
{
char anagrama[tamanho];
printf ("Este programa é um programa que ira calcular o anagrama de uma palavra\n\n");
printf ("Informe uma palavra de no maximo 5 caracteres: >");
gets(anagrama);
//tratar condição caso o usuário digite uma palavra maior que 5
if ( strlen(anagrama) > 5 ){
system("cls");
system("color 81");
printf("\n\n\n\n\n\n\n\n\n\n\nERRO!!! Este programa so funciona com palavras\n\nque tenhao 5 caracteres apenas!!\n\n");
system("Pause");
return 1;
}
//exibir numero de anagramas possiveis
printf ("Numero de anagramas possiveis: %d \n\n",numAnagrama(anagrama));
system("PAUSE");
return 0;
}
//funcao que retorna o numero de anagrama possiveis de se montar
int numAnagrama (char anag[]){
int c=0;
//verificar letras iguais
if(vletrasIguais(anag)== 0){
c=strlen(anag);
c=fatorial(c);
}
else {
pletrasIguais(anag);
}
return c;
}
//Funcao que retorna o fatorial
int fatorial (int n)
{
int result;
if(n < 0 ) return -1; //erro
if(n == 0 || n == 1) return 1;
result = fatorial(n-1) * n;
return result;
}
//funcao para verificar se exixte letrars iguais na palavra
//caso não tenha a funcao retorna numero 0;
int vletrasIguais (char anag[]){
int ret=0;
for (int i = 0; i < strlen(anag); i++){
for (int j = 0; j < strlen(anag); j++){
if(anag==anag[j]){
ret++;
}
}
if(ret==1)
ret=0;
}
return ret;
}
int pletrasIguais (char anag[]){
struct comparacao{
char letra;
int quantidade;
};
comparacao vetor[tamanho];
char l;
for(int cont=0;cont<tamanho;cont++){
vetor[cont].quantidade=0;
vetor[cont].letra='$';
}
for(int a=0; a<strlen(anag); a++){
l= anag[a];
for(int b=0; b<strlen(anag); b++){
if (l==anag){
for(int z=0; z<strlen(anag); z++){
if(vetor[z].letra=='$'){
vetor[z].letra=anag[a];
vetor[z].quantidade++;
z=strlen(anag);
}
else{
if(vetor[z].letra==anag[a]){
vetor[z].quantidade++;
z=strlen(anag);
}
}
}
}
} printf("vetor %d %c \n", vetor[a].quantidade, vetor[a].letra);
}
}
Pergunta
Filipe Nogueira
boa tarde
Estou tendando fazer um programa que leia uma palara e retorna o numero de anagramas possiveis de fazer.
o problema esta na ultimafuncao do codigo onde eu montei uma struct para esta colocando a letra da palavra e a quantidade de vezes que ela aparece na palavra so que a funcao ao invés de me retorna a quantidade ela me retorna a quantidade ao quadrado e eu não sei o que fazer
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.