Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

quitZAUMMM

[Resolvido] [Código] Usando o map [2]

Recommended Posts

Fala galera, já fiz um tópico uma vez nessa área mostrando uma das utilidades do container map, aki vai mais 2 códigos rápidos que desenvolvi para ajudar um amigo.

 

Código 1:

Imita uma lista, listando, buscando e removendo seus dados:

Obs: vale lembrar que não fiz controles nesse programa por isso usando "indevidamente" pode não funcionar, coisas como pesquisar oq não existe e coisas assim ;D

 

#include <cstdio>
#include <iostream>
#include <map>
#include <string>

using namespace std;

map<int, string> lista;
map<int, string>::iterator it;


int menu(){
   int opc;
   cout << "Menu Principal \n" << endl;
   cout << "1 - Inserir um candidato na lista" << endl;
   cout << "2 - Remover um candidato na lista" << endl;
   cout << "3 - Exibir um candidato na lista" << endl;
   cout << "4 - Buscar um candidato na lista" << endl;
   cout << "5 - Mostrar todos os candidatos da lista" << endl;
   cout << "0 - Encerrar o Programa" << endl;
   cout << "Digite sua opcao: ";
   cin >> opc;
   return opc;
}

void insereLista(){
   string nome;
   int posicao;
   cout << "Digite o nome: ";
   cin >> nome;
   cout << "Digite a posicao: ";
   cin >> posicao;
   lista[posicao] = nome;
}

void removeLista(){
   int posicao;
   cout << "Digite a posicao: ";
   cin >> posicao;
   lista.erase(posicao);
}

void exibeUmLista(){
   int posicao;
   cout << "Digite a posicao: ";
   cin >> posicao;
   cout << lista.find(posicao)->second << endl ;
}

void buscaLista(){
   string nome;
   int tem = 0;
   cout << "Digite o nome: ";
   cin >> nome;
   for (it=lista.begin() ; it!=lista.end(); it++) if (nome.compare((*it).second) == 0) tem = 1;
   if (tem == 0) cout << "Nao tem na lista " << endl;
   else          cout << "Tem na lista" << endl;
}

void exibeLista(){
   for (it=lista.begin() ; it!=lista.end(); it++) cout << (*it).second << endl;
}

int main(){
   int opc, posicao;
   opc = 0;
   while (true){
       opc = menu();
       if (opc==0) break;
       else if (opc==1) insereLista();
       else if (opc==2) removeLista();
       else if (opc==3) exibeUmLista();
       else if (opc==4) buscaLista();
       else if (opc==5) exibeLista();
   }
   return 0;
}

 

Código 1:

Dado um *.txt de entrada e informando um de saida, ele joga no mapa e contabiliza as palavras iguais com + de 3 caracteres.

vale lembrar que ele elimina os digitos das palavras e não faz diferença se é td minusculo ou maisculo pois no processamento convertido tudo para minusculo:

 

#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <map>

using namespace std;

int main () {
   int i, index;
   ifstream arquivoEntrada;
   ofstream arquivoSaida;
   map<string, int> mapa;
   map<string, int>::iterator it;
   char entrada[256], saida[256], palavra[256], palavraAux[256];
   cout << "Atencao: O programa como nao diferencia minuscula de maiscula, sera escrito todo em minusculo" << endl;
   while(true){
       cout << "Digite o arquivo de entrada(nao precisa digitar a extensao): ";
       cin >> entrada;
       strcat(entrada, ".txt");
       arquivoEntrada.open(entrada, ifstream::in);
       if(!arquivoEntrada.is_open()){
           cout<<"Nao foi possivel abrir arquivo!\n";
           arquivoEntrada.clear();
       }
       else break;
   }
   while (arquivoEntrada.good()) {
       index = 0;
       arquivoEntrada.getline(palavra, 255);
       for(i=0;i<strlen(palavra);i++) {
           palavra[i] = tolower(palavra[i]);
           if (!(ispunct(palavra[i]))) palavraAux[index++] = palavra[i];
       }
       palavraAux[index] = '\0';
       if (mapa.count(palavraAux) == 0) mapa[palavraAux] = 1;
       else mapa[palavraAux]++;
   }
   cout << "Digite o arquivo de saida(nao precisa digitar a extensao): ";
   cin >> saida;
   strcat(saida, ".txt");
   arquivoSaida.open(saida, ios::out);
   for (it=mapa.begin() ; it != mapa.end(); it++) {
       if ((*it).first.length() > 3) {
           arquivoSaida << (*it).first << " => " << (*it).second << endl;
       }
   }
   arquivoEntrada.close();
   arquivoSaida.close();
   return 0;
}

 

Isso ae galera, qualquer dúvida só falar ;D

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.