Ir ao conteúdo

ajuda com programa de agenda eletronica em c++


cassitah

Posts recomendados

Postado

alguem poderia me ajudar a identificar o erro deste programa? porque deveria fazer uma ação quando apertasse do numero 1 ao 0 (1,2,3,4,0) porém ado aperto um dos numeros o programa sai.

algume poderia me ajudar?

aqui esta o código do programa:


#include <iostream.h>
#include <stdlib.h>
#include <cstdio>
#include <cstring>
#include <conio.h>

int i,cont;
char op,menu=0;
struct contato
{
char nome[50];
char cel[30];
char tel[30];
char mail[50];
};

struct contato vetor[101];

int main()
{

cout << "\t\t\t Agenda Eletronica\n";
cout << "\t\t\t Menu Principal\n\n";
cout << " |-----------------------|\n";
cout << " | 1. Inserir Contato | \n";
cout << " | 2. Consultar Contato | \n";
cout << " | 3. Listar os Contatos | \n";
cout << " | 4. Exlcuir Contato | \n";
cout << " | 0. Sair | \n";
cout << " |_______________________|\n\n";
cout << " Feito por: ----------------------.\n\n";
cout << "Selecione qual acao deseja executar: ";
cin >> menu;

while (menu == 1) {

cout << "****** Inserir Contatos ******";
cout << "Deseja inserir quantos contatos? ";
cin >> cont;
for (i=0;i<cont;i++) {
cout << "\n\nDigite o Nome: ";
gets(vetor[i].nome);
cout << "\n\nDigite o numero do Celular: ";
gets(vetor[i].cel);
cout << "\n\nDigite o numero do Telefone: ";
gets(vetor[i].tel);
cout << "\n\nDigite o E-mail: ";
gets(vetor[i].mail);
}


while (menu==2) {
system ("CLEAR");
cout << "\n Nome: %s",vetor[i].nome;
cout << "\n Celular: %s",vetor[i].cel;
cout << "\n Telefone: %s",vetor[i].tel;
cout << "\n E-mail: %s",vetor[i].mail;
cout << "\n\nDeseja voltar ao Menu Principal? S/N. ";
cin >> op;
}
}
system("PAUSE");
return 0;

}

Postado

O seu menu foi declarado com char porém deveria ser declarado com int.

Mas atente-se você vai entrar em loop na forma que se encontra.

[]'s

"O programador competente está consciente do tamanho limitado de seu próprio crânio" (E. Dijkstra)

  • 1 ano depois...
Postado

com menus, o melhor é sempre o switch case mas se quiser fazer com while teria que ter while(menu != de 0) pois zero é a opcao sair, tem tambem os outros error q o pessoal ai falou, o menu q é char e deveria ser int..

outra coisa, talvez eu esteja errada, mas onde você escreveu

struct contato vetor[101];

precisa mesmo da palavra struct antes de contato?? acho q n

Postado

E aí cassitah, beleza?

Eu to fazendo um trabalho pra faculdade que é bem parecido com o seu.

Teria como você me passar seu código completo pra eu comparar com o meu e ver quais são meus erros?

Se quiser me mando uma cópida do meu se quiser comparar também.

[]'s

Postado

Olá, Gabriela.

Sim. Precisa usar o especificador de tipo struct, antes de declarar o vetor, pro compilador saber de que tipo de dados se trata. Se você usar um typedef, aí, você não precisa declarar STRUCT, porque o tipo definido já faz referência à struct.

cassitah!

Tua lógica não está correta. O melhor seria colocar todo o menu e suas entradas em um comando DO, p. ex., e depois selecionar a opção através de switch/case, e no final sim, aí você testaria e entrada pra ver se continua ou não.

do
{
// exibição da tela do menu
// entrada da opção

switch ( entrada )
{
case 1:
break;

case 2:
break;

case 3:
break;

}
}
while ( entrada != 0 );

Boa sorte.

[]'s

Postado

oi...

estou fazendo um prog parecido com esse...

é de agenda também...

só q eu estou usando ponteiros...

estou usando lista encadeada...

estou com problema na hora de fazer a procura...

como q eu vou percorrer os ponteiros..

Será q tem como alguém me ajudar please?

Desde já obrigada....

Postado

Oi, elaine.m.

Acreditando que você tenha guardado o ponteiro do primeiro registro, você percorre todos os registros até encontrar o que você quer, ou então, quando o apontador do último registro apontar NULL.

Se encontrar NULL, sai e devolve o NULL informando que não encontrou nada, caso contrário, devolve o ponteiro do registro que contenha os seus dados. Alguma coisa parecida com isto:

struct ficha {
unsigned char letra;
struct ficha *proximo;
};

int main ( void )
{
struct ficha *ptr, *ptr_inicial;
char terminar = 0;

// em algum lugar se atribuiu à ptr_inicial o endereço do primeiro registro

ptr = ptr_inicial;

do
{
if ( ptr != NULL )
{
if ( ptr->letra == 'A' )
{
terminar = 1;
}
else
{
ptr = ptr->proximo;
}
}
else
terminar = 1;
} while ( !terminar );

return 0;
}

Espero que ajude.

[]'s

Postado

oi...

seguinte no nosso caso..

a gente nao guarda o primeiro nao...

a gente guarda o último...

será q tem como dar certo assim???

Postado

Olá, elaine.m.

Depende. Se o ponteiro da sua estrutura indicar o registro anterior, caso contrário, você perde o ponteiro do primeiro registro e não tem mais como localizá-lo. Só vai poder localizar o último, que é pra onde o ponteiro aponta. Os outros.... Se perderam, ehehehehehehe

É lista duplamente encadeada?

[]'s

  • 11 meses depois...
Postado

Estou precisando, justamente desse codigo.

aguardo retorno,

grata,

Val

alguem poderia me ajudar a identificar o erro deste programa? porque deveria fazer uma ação quando apertasse do numero 1 ao 0 (1,2,3,4,0) porém ado aperto um dos numeros o programa sai.

algume poderia me ajudar?

aqui esta o código do programa:


#include <iostream.h>
#include <stdlib.h>
#include <cstdio>
#include <cstring>
#include <conio.h>

int i,cont;
char op,menu=0;
struct contato
{
char nome[50];
char cel[30];
char tel[30];
char mail[50];
};

struct contato vetor[101];

int main()
{

cout << "\t\t\t Agenda Eletronica\n";
cout << "\t\t\t Menu Principal\n\n";
cout << " |-----------------------|\n";
cout << " | 1. Inserir Contato | \n";
cout << " | 2. Consultar Contato | \n";
cout << " | 3. Listar os Contatos | \n";
cout << " | 4. Exlcuir Contato | \n";
cout << " | 0. Sair | \n";
cout << " |_______________________|\n\n";
cout << " Feito por: ----------------------.\n\n";
cout << "Selecione qual acao deseja executar: ";
cin >> menu;

while (menu == 1) {

cout << "****** Inserir Contatos ******";
cout << "Deseja inserir quantos contatos? ";
cin >> cont;
for (i=0;i<cont;i++) {
cout << "\n\nDigite o Nome: ";
gets(vetor[i].nome);
cout << "\n\nDigite o numero do Celular: ";
gets(vetor[i].cel);
cout << "\n\nDigite o numero do Telefone: ";
gets(vetor[i].tel);
cout << "\n\nDigite o E-mail: ";
gets(vetor[i].mail);
}


while (menu==2) {
system ("CLEAR");
cout << "\n Nome: %s",vetor[i].nome;
cout << "\n Celular: %s",vetor[i].cel;
cout << "\n Telefone: %s",vetor[i].tel;
cout << "\n E-mail: %s",vetor[i].mail;
cout << "\n\nDeseja voltar ao Menu Principal? S/N. ";
cin >> op;
}
}
system("PAUSE");
return 0;

}

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...