Ir para conteúdo

POWERED BY:

Arquivado

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

Iarlen

Agenda em C++

Recommended Posts

Boa tarde.

 

Estou tentando criar uma agenda em C++ usando o

struct
, mas não estou sabendo como usar. Estou usando vetor para o telefone e o e-mail e não estou conseguindo acessar e definir para cada posição o valor dotelefone e do e-mail.

 

Arquivo: Agenda.cpp, Agenda.h, Contato.cpp, Contato.h

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste o que você já fez, fica mais fácil de ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 
#include <iostream>
#include "Contato.h"
using namespace std;
 
void inicializarContato(Contato &c, string nome, int fone, string email, int pos) {
     pos = 0; 
     c.nome = nome;
     
     while(pos < 3){
     
     c.telefones[pos] = fone;
     c.emails[pos] = email;
     pos++;
}
}
 
 
int incluirContato(Contato c, Contato contatos[], int posicao, int tam) {
    if (posicao < tam && posicao >= 0) { // Valida a posição de inserção
                contatos[posicao] = c;
                return 1;
    }
    return 0; // Posição inválida!
}
 
Contato consultarContato(int posicao, Contato contatos[], int tam) {
        if (posicao < tam && posicao >= 0) { // Valida a posição de inserção
               return contatos[posicao];
        }
       
        Contato c;
        return c;
}
 
void exibirContato(Contato contatos[], int posicao, int tam) {
     Contato c = consultarContato(posicao,contatos,tam);
     cout << "Numero contato: " << posicao << endl;
     cout << "Contato: " << c.nome << endl;
    
     cout << "Telefone: " << c.telefones[0] << endl;
     cout << "Email: " << c.emails[0] << endl;
}


 

 
#include "Contato.cpp"
#include <stdlib.h>
using namespace std;
 
const int TAM = 20;
 
void obterDados(string&, int&, string&, int&);
 
int main() {
    Contato agenda[TAM];
    Contato c;
    string s1,s2;
    int i,pos,posi;
 
    obterDados(s1,i,s2,pos);
     
    inicializarContato(c,s1,i,s2,posi);
    
    if (incluirContato(c, agenda, pos, TAM)) {
       exibirContato(agenda, pos, TAM);
    } else {
       // Mensagem de erro caso não seja possível inserir o contato na agenda
       cout << "Nao foi possivel incluir o contato na agenda na posicao " << pos << endl;
       cout << "A agenda possui apenas " << TAM << " posicoes." << endl;
    }
    
    system("PAUSE");
    return 0;
}
 
void obterDados(string &nome, int &fone, string &email, int &posicao) {
     cout << "Digite um nome" << endl;
     getline(cin,nome);  
     cout << "Digite um email" << endl;
     getline(cin,email);
     cout << "Digite um numero de telefone" << endl;
     cin >> fone;
     cout << "Digite a posicao onde o contato deve ser inserido na agenda" << endl;
     cin >> posicao;
}
 



			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 c.telefones[pos] = fone;       c.emails[pos] = email;

 

Se o telefone e o email são vetores de char, esta não é a forma correta de atribuição.

Pode utlizar strcpy ou até memcpy.

Além de ter erro de lógica, qual o objetivo do while na função?

 

strcpy: http://www.cplusplus.com/reference/cstring/strcpy/

memcpy: http://www.cplusplus.com/reference/cstring/memcpy/?kw=memcpy

Compartilhar este post


Link para o post
Compartilhar em outros sites

O objetivo de usar o while era que em cada posição fosse atribuído um valor.

 

Vou tentar o que você disponibilizou. Muito obrigado.

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.