Histograma de uma frase

Publicado por Renan Birck Pinheiro (última atualização em 07/10/2009)

[ Hits: 8.774 ]

Homepage: http://renanbirck.blogspot.com

Download histograma.c




Programa que lê uma frase (até 100 caracteres) e dá a distribuição das letras nela.

  



Esconder código-fonte

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

// Copyleft '09 Renan Birck

int main() {
   char *frase;
   int numcharsmai[26], numcharsmin[26], i, numast;

   
   printf("***** HISTOGRAMA DE UMA STRING *****\n");
   printf("Por favor note que ele não conta caracteres acentuados. \n");
   
   printf("Introduza a frase: ");
   fgets(frase,100,stdin);
   
   // zera os contadores.
   for(i = 0; i<26; i++) numcharsmai[i] = numcharsmin[i] = 0;
      
   // anda na frase, aumentando o vetor adequadamente.   
   while(*frase) {
      if(('a' <= *frase) && (*frase <= 'z')) numcharsmin[*frase - 'a']++;
      if(('A' <= *frase) && (*frase <= 'Z')) numcharsmai[*frase - 'A']++;
      
      frase++;
   }
   
   // Imprime as letras minúsculas.
   for(i = 'a'; i<='z'; i++) if(numcharsmin[i-'a'])  // se não houver 0 de uma dada letra
   { 
      printf("%c: ", i); 
      for(numast = 0; numast < numcharsmin[i-'a']; numast++)    printf("*"); // um asterisco por letra
      printf( "\t %d \n",numcharsmin[i-'a']);
   }
   
   // Imprime as letras maiúsculas.

   for(i = 'A'; i<='Z'; i++) if(numcharsmai[i-'A']) 
      {
         printf("%c: ", i);
         for(numast = 0; numast < numcharsmai[i-'A']; numast++)    printf("*");
         printf( "\t %d \n", numcharsmai[i-'A']);      
      }
   
   return 0;
}

Scripts recomendados

Retorna o módulo de um número

Usando dois contadores em uma estrutura de repetição simples

Escolhe Animal

Números perfeitos

Pilha com alocação estática


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts