Ir para conteúdo
Fórum Script Brasil
  • 0

Caracteres Repetidos


Wendel Nunes

Pergunta

Ola estou tentando criar um codigo que le uma frase e fale quantas vezes cada caracter da frase se repetiu!

por exemplo wendel nunes

w=1 vez

e=3 vezes

n=3 vezes

d=1 vez

l=1 vez

u=1 vez

s=1 vez

ai fiz este más acho que não ficou legal.


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char texto[100];
char letras[] = "abcdefghijklmnopqrstuvxzwyABCDEFGHIJKLMNOPQRSTUVXZWY";
char letrasaux[100];
int x, y, cont=0;

printf ("\nEscreva um texto: \n");
gets (texto);

for (x=0; x<strlen(letras); x++) {
for (y=0; y<strlen(texto); y++) {

if (texto[y] == letras[x]){
cont++;
printf ("\nA letra %c contem %d vez(es) na frase\n", texto[y], cont);
}
}

cont=0;
}


system("pause");
return 0;
}

[/codebox]

sei que para imprimir textos com acentuação teria que usar tabela ASCII mas ai e mais complicado hehe!

queria dicas para melhorar?!?! Sugestões!

Editado por Wendel Nunes
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você poderia criar um array int caracteres[255], e mapear cada indice para um valor ASCII.

Por exemplo, caracteres[65] seria o 'A'. Então a cada 'A', você incrementaria caracteres[65]++.

Depois é só fazer um loop rodando os 255 indices. Se for igual a 0, não faça nada.

Se maior ou igual a 1, imprima a mensagem usando %c como i.

Exemplo:

int i = 0;

for(i = 0; i < 255; ++i) {
    if(caracteres[i] > 0) {
        printf("A letra %c aparece %d vez(es) na frase.\n", i, caracteres[i]);
    }
}

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Você poderia criar um array int caracteres[255], e mapear cada indice para um valor ASCII.

Por exemplo, caracteres[65] seria o 'A'. Então a cada 'A', você incrementaria caracteres[65]++.

Depois é só fazer um loop rodando os 255 indices. Se for igual a 0, não faça nada.

Se maior ou igual a 1, imprima a mensagem usando %c como i.

Exemplo:

int i = 0;

for(i = 0; i < 255; ++i) {
    if(caracteres[i] > 0) {
        printf("A letra %c aparece %d vez(es) na frase.\n", i, caracteres[i]);
    }
}

Abraços.

opa vlw vou tentar aqui e posto se surgir alguma dúvida vlw!

abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Vlw awe pela dica consegui resolver pelo que você me passou!

ta awe


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
char frase[100];
int fraseaux[100];
int ascii[255];
int i;

printf("\n:::Algoritimo que conta quantas vezes cada letra de uma frase repetiu:::\n");
printf("\nDigite uma frase: \n");
printf("\n");
gets(frase);

//Zerando Tabela ASCII
for (i=0; i<255; i++){
ascii[i]=0;
}

//Transformando carcteres de frase em inteiros (ASCII)
for (i=0; i<strlen(frase);i++){
fraseaux[i]=frase[i];
}

//transformando caracteres caixa alta para caixa baixa
for (i=0; i<strlen(frase); i++){
if (fraseaux[i] > 64 && fraseaux[i] <91){
fraseaux[i]=fraseaux[i]+32;
}
}

//contar quantidades de vezes
for (i=0; i<strlen(frase); i++){ //rodo por todas as letras
if (fraseaux[i] != 32){ // retirar espaços da contagem
ascii[fraseaux[i]]++;
} /* Guardando quantidade de vezes que a letras se repete*/
}

//imprimindo repetidos
for (i=0; i<255; i++){
if (ascii[i] > 1){ //verificar se e maior quer 1 pois não a necessidade de imprimir 1 ou 0 vezes!
printf("\nA letra %c repetiu %d vezes na frase que voce escreveu!\n", i, ascii[i]);
}
}

printf("\n");
system("pause");
return 0;
}
[/codebox]

rodando certim vlw!

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...