Pesquisar na Comunidade
Mostrando resultados para as tags ''map c++''.
Encontrado 1 registro
-
Olá, tenho este exercício de map para resolver, o código está tudo certo, menos a parte de ler arquivo! Consigo gravar normalmentel, mas na hora de ler o arquivo gerado em bloco de notas para o executável não tem jeito. Gostaria apenas de arrumar a classe ler_jogador(), para trazer de forma correta as informaçoes do bloco de notas gerado, pois não consigo ler para o programinha que é bem simples #include <cstdlib> #include <iostream> #include <fstream> #include <map> #include "func_pessoa.h" #include <sstream> #include<string.h> using namespace std; map<string,pessoa> map_escalacao; map<string,pessoa>::iterator it; void gravar_jogador(){ fstream arq; char arquivo_char[80]; string arquivo_ler; std::stringstream Resultado; arquivo_ler = "dados_jogador" + Resultado.str() + ".txt"; strcpy(arquivo_char, arquivo_ler.c_str()); arq.open(arquivo_char, ios::out | ios::app); for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){ arq << it->first << "\t" << it->second.getnome()<<"\n"; } cout << "Gravando..." << endl; cout << "Dados gravados com sucesso em dados_jogador" << Resultado.str() << endl; arq.close(); } void ler_jogador(){ string chave, nome; fstream arq("dados_jogador.txt",ios::in); if(arq.fail() == 1){ cout << "O arquivo a ser lido não esta gravado em disco" << endl; return; } int i = 0; while(!arq.eof()){ arq >> chave >> nome; map_escalacao[chave] = pessoa(num,nome); } arq.close(); //apresenta os dados do arquivo //for(int i = 0; i < 3; i++){ // pList[i].imprimir(); // } void menu(){ system("cls");//limpa os dados do console cout << "---- ESCALACAO PROSPERA E.C ----\n\n" << endl; cout << "1 - Limpar escalacao" << endl;// cout << "2 - Inserir jogador" << endl;// cout << "3 - Remover pelo numero" << endl; cout << "4 - Remover pelo nome do jogador" << endl; cout << "5 - Localizar pelo numero" << endl; cout << "6 - Localizar pelo nome" << endl; cout << "7 - Listar jogadores" << endl; cout << "8 - GRAVAR" << endl; cout << "0 - Sair" << endl; } int main() { ler_jogador(); int opcao,subst; bool nr_localizado; string num,nome; while(true){ menu(); cout << "\nNumero da acao desejada:"; cin >> opcao; //define a escolha do usuário if(opcao == 0){ break; }else if(opcao == 1){ map_escalacao.clear(); }else if(opcao == 2){ //solicita ao usuários os dados cout << "Nome: "; cin >> nome; cout << "Numero: "; cin >> num; //verifica se o número do telefone já existe no mapa it = map_escalacao.find(num); if(it != map_escalacao.end()){ cout << "O numero informado já esta na escalaçao" << endl; cout << "1 - Substituir\n2 - Cancelar\nOpcao: " << endl; cin >> subst; if(subst != 1){ //o dado não será substituido continue; } } //insere o dado no mapa, se existir, irá substituir map_escalacao[num] = pessoa(nome); }else if(opcao == 3){ cout << "Desconvocar numero: "; cin >> num; int nrDel = map_escalacao.erase(num); if(nrDel > 0){ cout << "O Jogador foi Desconvocado" << endl; }else{ cout << "O Jogador não existe" << endl; } }else if(opcao == 4){ cout << "Nome a desconvocar: "; cin >> nome; if(!map_escalacao.empty()){ nr_localizado = false; for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){ if(nome == it->second.getnome()){ it->second.imprimir(); cout << "Desconvocando..." << endl; map_escalacao.erase(it->first); nr_localizado = true; break; } } if(!nr_localizado){ cout << "O " << nome << " não foi localizado" << endl; } }else{ cout << "A escalacao não possui jogadores" << endl; } }else if(opcao == 5){ cout << "Numero a localizar: "; cin >> num; it = map_escalacao.find(num); if(it != map_escalacao.end()){ cout << "Dados jogador" << endl; it->second.imprimir(); }else{ cout << "Numero não encontrado" << endl; } }else if(opcao == 6){ cout << "Nome: "; cin >> nome; if(!map_escalacao.empty()){ nr_localizado = false; for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){ if(nome == it->second.getnome()){ cout << "Dados jogador" << endl; it->second.imprimir(); nr_localizado = true; break; } } if(!nr_localizado){ cout << "O " << nome << " não foi localizado" << endl; } }else{ cout << "A escalacao não possui jogadores convocados" << endl; } }else if(opcao == 7){ if(!map_escalacao.empty()){ cout << "Jogadores: " << endl; for(it = map_escalacao.begin(); it != map_escalacao.end(); it++){ cout << "Numero: " << it->first; it->second.imprimir(); cout << "" << endl; } }else{ cout << "A escalacao não possui jogadores" << endl; } }else if(opcao == 8){ gravar_jogador(); }else{ cout << "A opcao informada e invalida" << endl; } system("PAUSE"); }//#end while return 0; } resto do programa #include <string> #include <iostream> using namespace std; //declaração da classe pessoa class pessoa{ private: string nome; public: pessoa(); pessoa(string nome); ~pessoa(); string getnome(); void setnome(string nome); void imprimir(); }; //implementação das funções da classe pessoa pessoa::pessoa(){} pessoa::pessoa(string nome){ this->nome = nome; } pessoa::~pessoa(){} string pessoa::getnome(){ return nome; } void pessoa::setnome(string nome){ this->nome = nome; } //apresenta os dados da pessoa no console void pessoa::imprimir(){ cout << " Nome: " << nome << endl; } Desculpe a péssima formatação