Ir para conteúdo
Fórum Script Brasil

Diego_BM

Membros
  • Total de itens

    10
  • Registro em

  • Última visita

Sobre Diego_BM

Diego_BM's Achievements

0

Reputação

  1. Diego_BM

    Problema com STL Lista

    Amigo acho que voce esta se confundindo um pouco, então vou exclarecer os topicos que voce colocou. - Tanto faz no meo codigo usar push_front ou push_back - O codigo do post 11 esta usando alocacao dinamica não para o objeto, mas sim para os capos corpo e assunto(arquivo CPP) - A alocacao de memoria que eu fiz para os campos esta no CPP, então cada vez que eu acessae o metodo ele vai alocar memoria, vez de ter q colocar new toda vez q usar assunto ou o corpo no main. - Eu coloquei o break no case 2 assim como você fez e não deu certo, na verdade aquilo não é um loop, ele vai parar de ver se o assunto que eu digitei é igual ao assunto que tem na lista quando encontrar o final da lista, so que se eu tirar um ele se perde na contagem ali no caso é o Lst++
  2. Diego_BM

    Problema com STL Lista

    Sim, abri o forum pra responder! isso mesmo que eu fiz! hehehe so falta uma coisinha agora e esta pronto =] Problema no case 2! =[ Serve pra deletar uma mensagem por assunto, problema que eu percebi que ele se confunde e erra na incrementacao :/ Mensagem de erro de execucao" list iterator incompatible" cout << "Digite o assunto para remover a mensagem" << endl; cin.getline(ass, 30); for(Lst!=Lista.begin();Lst!=Lista.end(); Lst++){ if(!strcmp(ass,Lst->getAssunto())){ Lista.erase(Lst); } }
  3. Diego_BM

    Problema com STL Lista

    BOM! Cara tu me deu uma luz e eu lembrei de uma coisa que eu ainda n tinha feito... hehehe dentro do CPP da classe mensagem dei um new no dado que eu tava recebendo dai não da mais aquele erro. debugei e deu tudo certinho na insercao, porem no mostrar os dados ainda ta dando errado, o problema agora ta no case 4 e não no case 1, hehe a insercao ficou legal agora, problema é mostrar os dados =x Resumindo debugando a insercao esta ok.O problema que mostrar os dados fica repetido. (case 4) Problema aki: for(Lst=Lista.begin(); Lst!=Lista.end(); Lst++){ cout << "Assunto: " << Lista.back().getAssunto() << endl; cout << "Mensagem: " << Lista.back().getCorpo() << endl; } MAIN #include <iostream> #include <list> #include "Mensagem.h" #include <fstream> using std::ifstream; using namespace std; list<Mensagem> Lista; list<Mensagem>::iterator Lst; list<Mensagem> Lista2; int main(){ char msg[50],ass[30]; int opcao; opcao = 1; while(opcao!=6){ Mensagem m; ifstream Msg("Mensagem.txt",ios::in); cout << "Escolha uma opcao: \n1 - Inserir Msg \n2 - Remover Msg \n3 - ordenalor por assunto \n4 - Mostrar Mensagens \n5 - juntar Filas \n6 - Sair" << endl; cin >> opcao; cin.get(); switch(opcao){ case 1: cout << "Digite um assunto: " << endl; cin.getline(ass, 30); cout << "Digite uma mensagem: " << endl; cin.getline(msg, 50); //m = new Mensagem(); m.setAssunto(ass); m.setCorpo(msg); Lista.push_front(m); break; case 2: cout << "Digite o assunto para remover a mensagem" << endl; cin.getline(ass, 30); for(Lst=Lista.begin(); Lst!=Lista.end(); Lst++){ while(!strcmp(ass,Lst->getAssunto())){ Lista.erase(Lst); } } break; case 3: Lista.sort(); break; case 4: for(Lst=Lista.begin(); Lst!=Lista.end(); Lst++){ cout << "Assunto: " << Lista.back().getAssunto() << endl; cout << "Mensagem: " << Lista.back().getCorpo() << endl; } break; case 5: char LinhaMsg[150]; while(!Msg.eof()&& Msg!=NULL) { Msg.getline(LinhaMsg, 150); char *token; token = new char[strlen(LinhaMsg)]; strcpy(token,LinhaMsg); strcpy(ass,strtok(token,";")); strcpy(msg,strtok(NULL, ";")); m.setAssunto(ass); m.setCorpo(msg); Lista2.push_front(m); } Msg.close(); Lista.merge(Lista2); break; case 6: system("pause"); break; } } }; .H #pragma once #include <iostream> class Mensagem { private: char* assunto; char* corpo; public: Mensagem(void); ~Mensagem(void); void setCorpo(char *c); char* getCorpo(); void setAssunto(char *a); char* getAssunto(); friend bool operator<(Mensagem &a, Mensagem &b){ return (strcmp(a.getAssunto(),b.getAssunto())) < 0; } }; .CPP #include "Mensagem.h" Mensagem::Mensagem(void) { } Mensagem::~Mensagem(void) { } void Mensagem::setCorpo(char *c){ corpo = new char[strlen(c)]; //arrumado strcpy(corpo,c); //arrumado } char* Mensagem::getCorpo(){ return corpo; } void Mensagem::setAssunto(char *a){ assunto = new char[strlen(a)]; //arrumado strcpy(assunto,a); //arrumado } char* Mensagem::getAssunto(){ return assunto; }
  4. Diego_BM

    Problema com STL Lista

    annot convert from 'char **' to 'char [50]' agora deu esse erro! tenso. Tipo tu mudar valores de dados na execucao atraves de programas, é um metodo.
  5. Diego_BM

    Problema com STL Lista

    Pelo pouco que eu entendo de programacao, pois estou comecando n faz mt tempo, se você colocar algo em private, uma injecao de SQL por exemplo fica mais dificil de ser implementada... Esta dando um erro tipo isso! cannot convert from 'char *' to 'char [50]' eu tentei dar um new no objeto, ele compila, porem a execucao continua dando errado. String não é mais dificil de ser manipulada que char* ? Obrigado pela atencao!
  6. Diego_BM

    Problema com STL Lista

    Eu não posso usar por regra do professor, faco curso de seguranca da informacao, dai é tipo uma programacao segura.... cara vez de usar o malloc como eu faria isso com new? Desculpe os erro de acento, teclado mt ruim =[ acho que eu entendi bem o erro agora! :D
  7. Diego_BM

    Problema com STL Lista

    Tem um case que eu preciso do ifstream! mas não faz diferenca no meu erro. Eu tenho um .h com set e get tanto de corpo como de assunto, eu não posso usar struct :/ .H class Mensagem { private: char* assunto; char* corpo; public: Mensagem(void); ~Mensagem(void); void setCorpo(char *c); char* getCorpo(); void setAssunto(char *a); char* getAssunto(); friend bool operator<(Mensagem &a, Mensagem &b){ return (strcmp(a.getAssunto(),b.getAssunto())) < 0; } }; .CPP #include "Mensagem.h" Mensagem::Mensagem(void) { } Mensagem::~Mensagem(void) { } void Mensagem::setCorpo(char *c){ corpo=c; } char* Mensagem::getCorpo(){ return corpo; } void Mensagem::setAssunto(char *a){ assunto=a; } char* Mensagem::getAssunto(){ return assunto; } MAIN #include <iostream> #include <list> #include "Mensagem.h" #include <fstream> using std::ifstream; using namespace std; list<Mensagem> Lista; list<Mensagem>::iterator Lst; list<Mensagem> Lista2; int main(){ char msg[50],ass[30]; int opcao; opcao = 1; while(opcao!=6){ Mensagem m; ifstream Mensagem("Mensagem.txt",ios::in); cout << "Escolha uma opcao: \n1 - Inserir Msg \n2 - Remover Msg \n3 - ordenalor por assunto \n4 - Mostrar Mensagens \n5 - juntar Filas \n6 - Sair" << endl; cin >> opcao; cin.get(); switch(opcao){ case 1: cout << "Digite um assunto: " << endl; cin.getline(ass, 30); cout << "Digite uma mensagem: " << endl; cin.getline(msg, 50); m.setAssunto(ass); m.setCorpo(msg); Lista.push_front(m); break; case 2: cout << "Digite o assunto para remover a mensagem" << endl; cin.getline(ass, 30); for(Lst=Lista.begin(); Lst!=Lista.end(); Lst++){ while(!strcmp(ass,Lst->getAssunto())){ Lista.erase(Lst); } } break; case 3: Lista.sort(); break; case 4: for(Lst=Lista.begin(); Lst!=Lista.end(); Lst++){ cout << "Assunto: " << Lista.front().getAssunto() << endl; cout << "Mensagem: " << Lista.front().getCorpo() << endl; } break; case 5: char LinhaMsg[150]; while(!Mensagem.eof()&& Mensagem!=NULL) { Mensagem.getline(LinhaMsg, 150); char *token; token = new char[strlen(LinhaMsg)]; strcpy(token,LinhaMsg); strcpy(ass,strtok(token,";")); strcpy(msg,strtok(NULL, ";")); m.setAssunto(ass); m.setCorpo(msg); Lista2.push_front(m); } Mensagem.close(); Lista.merge(Lista2); break; case 6: system("pause"); break; } } }; Acho que agora vai ficar mais intendivel pra vc! garanto que é um erro bobo... fica repetindo os dados inseridos :/
  8. Ola galera! To com um problema na minha lista, que eu preciso inserir um assunto e um corpo de mensagem pra dentro da lista, problema que eu envio o objeto e quando eu crio um segundo assunto e corpo ele substitui o primeiro e adiciona o segundo.... por exemplo: criei 1: assunto: oi corpo: bom dia saida 1: assunto:oi corpo: bom dia criei 2: assunto: oi2 corpo: boa noite (esta errado e acontece) saida 2: assunto: oi2 corpo: boa noite assunto: oi2 corpo: boa noite (esta certo e não acontece) saida 2: assunto: oi corpo: boa dia assunto: oi2 corpo: boa noite O que eu posso fazer? Codigo! #include <iostream> #include <list> #include "Mensagem.h" #include <fstream> using std::ifstream; using namespace std; list<Mensagem> Lista; list<Mensagem>::iterator Lst; list<Mensagem> Lista2; int main(){ char msg[50],ass[30]; int opcao; opcao = 1; while(opcao!=6){ Mensagem m; ifstream Mensagem("Mensagem.txt",ios::in); cout << "Escolha uma opcao: \n1 - Inserir Msg \n2 - Remover Msg \n3 - ordenalor por assunto \n4 - Mostrar Mensagens \n5 - juntar Filas \n6 - Sair" << endl; cin >> opcao; cin.get(); switch(opcao){ case 1: cout << "Digite um assunto: " << endl; cin.getline(ass, 30); cout << "Digite uma mensagem: " << endl; cin.getline(msg, 50); m.setAssunto(ass); m.setCorpo(msg); Lista.push_front(m); break; Classe #include "Mensagem.h" Mensagem::Mensagem(void) { } Mensagem::~Mensagem(void) { } void Mensagem::setCorpo(char *c){ corpo=c; } char* Mensagem::getCorpo(){ return corpo; } void Mensagem::setAssunto(char *a){ assunto=a; } char* Mensagem::getAssunto(){ return assunto;
  9. Diego_BM

    Problema com array C++

    Ops foi mal! eu coloquei o codigo errado ali é pra ser outra coisa, vou editar o codigo
  10. Ola galera! Primeira vez postando aqui, estou pra fazer um exercicio pra faculdade, porem cai em um erro que não vejo saida. O programa é simples, como se fosse um formulario, onde o usuario coloca o remetente (seu nome e email), logo ele adiciona um assunto e o corpo do email, tambem é possivel criar uma lista de contatos que seria o destinatario, onde há meu erro!Quando eu adiciono um destinatario esta tudo bem, porem quando eu adiciono outro ele parece que grava por cima do primeiro digitado, porem não sei se o erro é no mostrar todos os destinatarios quando solicitado, ou se o erro esta no array para gravar os destinatario.Estou colocando o codigo logo em seguida. MAIN #include "Contato.h" #include "Mensagem.h" #include <iostream> using namespace std; int main(){ Contato remetente; Contato destinatario[10]; Mensagem msg; int opcao,i; opcao =0; i=0; while(opcao!=6){ cout << "\n"; cout << "Digite uma opcao: \n1 - Inserir Remetente \n2 - Escrever Email \n3 - Ver Email \n4 - Inserir Lista de Contatos \n5 - Mostrar Lista de Contatos \n6 - Sair " << endl; cin >> opcao; if(opcao==1){ cout << "Digite um nome para o remetente:" << endl; char nome[30]; cin >> nome; remetente.SetNome(nome); cout << "Digite o email do remetente:" << endl; char email[50]; cin >> email; remetente.SetEmail(email); cout << "\n"; cout << "Remetente:" << endl; cout << remetente.GetNome() << " - " << remetente.GetEmail() << endl; } if(opcao==2){ cout << "\n"; cout << "Digite um assunto:" << endl; char assunto[60]; cin >> assunto; msg.setAssunto(assunto); cout << "Digite o corpo do email:" << endl; char corpo[100]; cin >> corpo; msg.setCorpo(corpo); } if(opcao==3){ cout << "-----------------------------------------------------------"; msg.setRemetente(remetente); cout << "\n"; Contato c = msg.getRemetente(); cout << "Remetente:" << endl; cout << "Nome:" << c.GetNome() << endl; cout << "Email:" << c.GetEmail() << endl; cout <<"\n"; cout << "Formulario:" << endl; cout << "Assunto:" << msg.getAssunto() << endl; cout << "Mensagem:" << msg.getCorpo() << endl; cout << "-------------------------------------------------------------"; } if(opcao==4){ cout << "Digite um nome para o destinatario:" << endl; char nomed[30]; cin >> nomed; destinatario[i].SetNome(nomed); cout << "Digite um email para o destinatario:" << endl; char emaild[60]; cin >> emaild; destinatario[i].SetEmail(emaild); msg.setDestinatario(i,destinatario[i]); i++; } if(opcao==5){ int p; for(p=0;p<i;p++){ Contato d = msg.getDestinatario(i); cout << "Nome:" << d.GetNome() << endl; cout << "Email:" << d.GetEmail() << endl; cout << "\n"; } } if(opcao==6){ system("pause"); } } return 0; } Classe Contato e CPP da Classe #pragma once class Contato { public: Contato(void); ~Contato(void); char* GetNome(); char* GetEmail(); void SetNome(char* n); void SetEmail(char* e); private: char* nome; char* email; }; #include "Contato.h" Contato::Contato(void) { } Contato::~Contato(void) { } void Contato::SetNome(char *n){ nome=n; } char* Contato::GetNome(){ return nome; } void Contato::SetEmail(char *e){ email =e; } char* Contato::GetEmail(){ return email; } Classe Mensagem e CPP da Classe #pragma once #include "Contato.h" class Mensagem { public: Mensagem(void); ~Mensagem(void); void setCorpo(char *c); char* getCorpo(); void setAssunto(char *a); char* getAssunto(); Contato getRemetente(); void setRemetente(Contato r); Contato getDestinatario(int indice); void setDestinatario(int indice,Contato dest); private: char* assunto; char* corpo; Contato remetente; Contato destinatario[10]; int ultimo; int j; }; #include "Mensagem.h" Mensagem::Mensagem(void) { } Mensagem::~Mensagem(void) { } void Mensagem::setRemetente(Contato r){ remetente=r; } Contato Mensagem::getRemetente(){ return remetente; } void Mensagem::setCorpo(char *c){ corpo=c; } char* Mensagem::getCorpo(){ return corpo; } void Mensagem::setAssunto(char *a){ assunto=a; } char* Mensagem::getAssunto(){ return assunto; } void Mensagem::setDestinatario(int indice,Contato dest){ j = indice; destinatario[j]=dest; } Contato Mensagem::getDestinatario(int indice){ ultimo = 0; ultimo = indice; for(indice=0;indice<ultimo;indice++){ j = indice; return destinatario[j]; } }
×
×
  • Criar Novo...