damihenrique

Map

Nov 14th, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <map>
  5.  
  6. using namespace std;
  7.  
  8. int main(){
  9.    
  10.     // UM EXEMPLO COM VÁRIAS FUNCIONALIDADES UTILIZANDO MAP
  11.     // incluir map
  12.  
  13.     char texto[1234], word[30], palavra[30];
  14.     map<string, int> mp; // mapa chamado mp, com a chave(indice) do tipo string e conteudo inteiro
  15.     int maior = 0;
  16.     string aparece;
  17.    
  18.     gets(texto); // leio um texto qualquer
  19.     int t = strlen(texto); // pego o tamanho do texto
  20.    
  21.     // essa parte, eu separo cada palavra do meu texto
  22.    
  23.     int c = 0; // começo na posicao 0
  24.    
  25.     for(int i=0; i<t; i++){
  26.          if(isalpha(texto[i])){ // se for letra, ou seja parte de uma palavra
  27.             word[c] = texto[i]; // a nova palavra que tou formando recebe a letra
  28.             c++; // aumento um no indice da nova palavra
  29.         }  
  30.          else{ // caso nao seja letra, pode ser espaço, virgula, pontuações em geral..
  31.             word[c] = '\0'; // no final de toda string, tenho que colocar o caracter '\0'
  32.             if(c > 0){ // se tenho pelo menos uma letra, ou seja, é uma palavra
  33.                mp[word]++; // conto mais uma vez a palavra no meu mapa
  34.                c = 0;  // volto c para 0, p procurar outra palavra
  35.             }  
  36.          }        
  37.     }
  38.    
  39.     if(c > 0){  // faço a mesma cosia fora do while, pois meu texto provavelmente vai terminar
  40.         word[c] = '\0';      // com uma letra, e não vai cair no else do for de cima..
  41.         mp[word]++;
  42.     }    
  43.    
  44.     // Quantidade de palavras diferentes
  45.     cout<<mp.size()<<endl;
  46.    
  47.     // Palavras(em ordem alfabética) e suas respectivas quantidades
  48.     map<string, int> :: iterator it; // cria o iterator do mesmo tipo do mapa(it foi o nome que eu dei)
  49.     for(it = mp.begin(); it != mp.end(); it++){                         // pode usar o nome que quiser
  50.         cout<<it->first<<" - "<<it->second<<endl; // mostro a chave(indice) e o conteudo
  51.         if(it->second > maior){ // lógica p ver a palavra que aparece mais vezes
  52.             maior = it->second; // maior qtdade que uma palavra aparece
  53.             aparece = it->first; // palavra que aparece mais vezes por enqto
  54.         }      
  55.     }
  56.    
  57.     // Palavra que mais aparece
  58.     cout<<"Mais aparece: "<<aparece<<endl;
  59.    
  60.     // Checando se uma palavra existe no meu mapa
  61.     gets(palavra);
  62.     if(mp[palavra] > 0)
  63.         cout<<palavra<<" existe!"<<endl;
  64.     else
  65.         cout<<palavra<<" nao existe..."<<endl;
  66.  
  67.     // Deletando tudo do mapa
  68.     mp.clear();
  69.    
  70.     system("pause");
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment