Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...