Estou fazendo um trabalho de faculdade onde tenho que criar uma struct e depois um vetor de 100 posições desta struct. Posteriormente tenho funções que precisam acessar este vetor criado da struct.
Pesquisei na internet uma forma de, criar este vetor dentro do MAIN e passá-lo para a função. Tem uma forma bem simples, mas e passando por valor, o que não resolve. Ai tentei passá-lo por referência, mas não consegui.
Fiz um código que, no DEV C++ da o seguinte erro:
[Linker error] undefined reference to `novo_nome(int*, cadastro*)'
ld returned 1 exit status
E no Visual Studio 2003 ele até compila, mas na hora de executar não funciona direito.
Este é o código:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string>
using namespace std;
int novo_nome(int *,struct cadastro*);
struct end{
char rua[20];
int numero;
char bairro[10];
char cidade[10];
};
struct cadastro{
char nome[30];
struct end endereco;
char fone[10];
long int cep;
};
int main( )
{
struct cadastro nomes[100];
cout<<"MENU DE OPCOES";
cout<<"\n1-Entrar com um novo nome";
cout<<"\n2-Imprimir na tela os dados de uma das pessoas";
cout<<"\n3-Imprimir uma lista de nomes que começas por uma letra informada";
cout<<"\n4-Fim do programa" <<endl;
int cont_nomes=0;
novo_nome(&cont_nomes,&nomes[100]);
system ("PAUSE");
return 0;
}
//Função para o cadastro de um novo nome
int novo_nome(int *cont,struct cadastro *contatos[100]){
bool sair=true;
char escolha;
if (*cont == 100){
cout<<"\nAtingido o máximo de cadastros!";
return 0;
}
while (*cont < 100 && sair){
cout<<"Informe os dados do contato" <<endl;
cout<<"Nome: ";
gets(contatos[*cont]->nome);
cout<<"Endereco" <<endl;
cout<<"Rua: ";
gets(contatos[*cont]->endereco.rua);
cout<<"Numero: ";
cin>>contatos[*cont]->endereco.numero;
fflush(stdin);
cout<<"Bairro: ";
gets(contatos[*cont]->endereco.bairro);
cout<<"Cidade: ";
gets(contatos[*cont]->endereco.cidade);
cout<<"Telefone: ";
gets(contatos[*cont]->fone);
cout<<"CEP: ";
cin>>contatos[*cont]->cep;
fflush(stdin);
*cont+=1;
cout<<"Tecle S para sair ou qualquer tecla para continuar cadastrando.";
cin>>escolha;
fflush(stdin);
cout<<endl;
if (escolha == 's' || escolha == 'S')
sair=false;
}
return 0;
}
Pergunta
Pablosk8
Pessoal,
Estou fazendo um trabalho de faculdade onde tenho que criar uma struct e depois um vetor de 100 posições desta struct. Posteriormente tenho funções que precisam acessar este vetor criado da struct.
Pesquisei na internet uma forma de, criar este vetor dentro do MAIN e passá-lo para a função. Tem uma forma bem simples, mas e passando por valor, o que não resolve. Ai tentei passá-lo por referência, mas não consegui.
Fiz um código que, no DEV C++ da o seguinte erro:
[Linker error] undefined reference to `novo_nome(int*, cadastro*)'
ld returned 1 exit status
E no Visual Studio 2003 ele até compila, mas na hora de executar não funciona direito.
Este é o código:
Se alguém puder me ajudar, ficarei muito grato!!!
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.