Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
#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;
}>
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
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.
Poste o que você já fez, fica mais fácil de ajudar.