Ir ao conteúdo
  • Cadastre-se

Contagem de repetição de caracteres numa string


Visitante

Posts recomendados

Estou tentando desenvolver um programa que dada como entrada 10 strings, para cada uma conte e exiba quantas vezes cada letra se repetiu. Até agora pesquisando conseguir fazer o programa abaixo que conta e exibe corretamente, só que eu preciso que a exibição seja feita da letra com mai  repetições até a menor, e do jeito que está ele segue a sequencia da tabela ASCII.

 

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <strings.h>
#define MAX 3

int main(){
int cont,linha,coluna;
int ascii[255];
char matriz[MAX][501];
char aux[MAX][501];

 

for(linha=0;linha<MAX;linha++){
scanf("%s", matriz[linha]);
}

for(linha=0;linha<MAX;linha++){

for(cont=0; cont<255; cont++){
  ascii[cont]=0;
}

for (cont=0; cont<strlen(matriz[linha]);cont++){
  aux[linha][cont]=matriz[linha][cont];
}

for (cont=0; cont<strlen(matriz[linha]); cont++){
    if (aux[cont] > 64 && aux[cont] <91){
        aux[linha][cont]=aux[linha][cont]+32;
    }
}

for (cont=0; cont<strlen(matriz[linha]); cont++){
    if (aux[cont] != 32){
        ascii[aux[linha][cont]]++;
    }
}

//IMPRESSÃO DOS VALORES

for (cont=0; cont<255; cont++){
   if (ascii[cont] > 0){
        printf("%c ", cont);
    }
}
printf("\n");
  for (cont=0; cont<255; cont++){
    if (ascii[cont] > 0){
        printf("%d ", ascii[cont]);
    }
}
    printf("\n");
}

    return 0;
}

Link para o comentário
Compartilhar em outros sites

Uma alternativa, não tão otimizada, é declarar uma matriz 26x2 para armazenar a quantidade de letras numa coluna e o código ASCII em outra,

Por exemplo, considerando apenas letras minúsculas:

    for(i = 0; i < strlen(texto); i++){                if(texto[i] != ' '){            letras[texto[i] - 97][0]++;                letras[texto[i] - 97][1] = texto[i];        }    }
Aí é só usar um bubble sort e depois exibir os elementos,

    for(i = 0; i < 26; i++){        if(letras[i][0])            printf("letra %c = %d vez(es)\n", letras[i][1], letras[i][0]);    }
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...