Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com array C++


Diego_BM

Pergunta

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];
    }
}

Editado por Diego_BM
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Acho que seu erro tá aqui:

for(i=0;i<i;i++) // i<i ???
Neste caso você deve declarar um outro contador para o for, como um j:
for(int j=0; j<i; j++)

Ou mudar o nome da variável i, por exemplo, para ContDest, ou outra coisa que identificasse a função dela, que é de contar o número de destinatários.

Se não for isso dá um retorno. Abraço.

Editado por RonaldoRG
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...