Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
XXXGABIRU

C Agenda Telefônica em C

Recommended Posts

Pessoal gostaria de ajuda neste código, a agenda precisa ter as funções : adicionar contato , exluir , listar , buscar e editar. 

Eu estou aprendendo ainda , porém segue o que fiz até agora , eu me perdi na lógica e gostaria de ajuda.

 

#include <stdio.h>
#include <stdlib.h>

#define RETORNA_MENU 0
#define MAX_X 100
#define MAX_NOME 100
#define MAX_TELEFONE 10

int qtdContatos = 0;

int main()
{

    char Contatos_Totais[MAX_X][MAX_NOME];
    char Telefones_Totais[MAX_X][MAX_TELEFONE];
    char **ptrNomes;
    char **ptrTelefones;

    ptrNomes = &Contatos_Totais;
    ptrTelefones = &Telefones_Totais;

    char Nome[MAX_NOME];
    char Telefone[MAX_TELEFONE];


    int opcao;


    MostraMenu();
    scanf("%d",&opcao);
    fflush(stdin);
    fflush(stdout);

    while(opcao != 6){
    switch(opcao){
    case 1: // ADICIONA CONTATO A LISTA.
    printf("\n-- Cadastro de novo contato --\n");
    printf("Nome do contato:\n");
    gets(Nome);
    printf("Telefone do contato:\n");
    gets(Telefone);
    Adicionar_Contato(Nome,Telefone,(ptrNomes + qtdContatos),(ptrTelefones + qtdContatos));
    break;

    /*case 2: // REMOVE CONTATO DA LISTA.
    Remover_Contato();
    break;*/

    case 3: // FAZ A LISTAGEM DE TODOS OS CONTATOS CADASTRADOS.
    Listagem_Contatos();
    break;

    /*case 4: // BUSCA informações INDIVIDUAIS DE UM CONTATO.
    Busca_Contato();
    break;

    case 5: // EDITA informações DE UM CONTATO.
    Editar_Contato();
    break;*/

    default:
    printf("Opcao incorreta.\n\n");

    }

    printf("\nEscolha outra opcao ou digite %d para retornar ao menu:\n",RETORNA_MENU);
    scanf("%d",&opcao);
    fflush(stdin);

    if(opcao == RETORNA_MENU){
    MostraMenu();
    scanf("%d",&opcao);
    fflush(stdin);
    }
    }

}

void MostraMenu(){
    printf("\n====== AGENDA TELEFONICA ======\n\n");
    printf("\n====== MENU ======\n");
    printf("Informe a opcao desejada:\n\n");
    printf("1) Adicionar um contato a agenda.\n");
    printf("2) Remover um contato da agenda.\n");
    printf("3) Lista de contatos cadastrados da agenda.\n");
    printf("4) Buscar contato na agenda.\n");
    printf("5) Editar contato da agenda.\n");
    printf("6) Sair.\n\n");
    }

void Adicionar_Contato(char Nome[MAX_NOME],char Telefone[MAX_TELEFONE],char **ptrNomes,char **ptrTelefones){

if(Nome != "" && Nome != NULL){
    *ptrNomes = Nome;
}
int i = 0;
for (i=0;i<MAX_TELEFONE;i++){
    if(Telefone== '\0')
        break;
}
if (i == MAX_TELEFONE){
    *ptrTelefones = Telefone;
}
else{
    printf("O numero precisa ter 9 digitos... \n");
    return;
}

printf("Contato Cadastrado!\n\n");

qtdContatos++;

}

 /*void Remover_Contato(int id,char **ptrNomes,char **ptrTelefones){
char opcao;

printf("Digite ")


if(opcao){


}
*/

void Listagem_Contatos(char Contatos_Totais[MAX_X][MAX_NOME],char Telefones_Totais[MAX_X][MAX_TELEFONE],int qtdContatos){
int i = 0;
int j = 0;

printf("\n======= LISTA DE CONTATOS CADASTRADOS =======\n");


for(i=0;i<qtdContatos;++i){
       for(j=0;j<qtdContatos;++j){
    printf("*** Contato %d ***\n",i+1);
    printf("Nome: %s\n",Contatos_Totais[j]);
    printf("Telefone: %s\n",Telefones_Totais[j]);
    fflush(stdin);
    i++;
    j++;

    }
}
}

void Buscar_Contato(){

}


 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, indo pelo meu modo de organizar o problema, seria interessante trabalhar com uma struct:

#include <stdio.h>
#define MAX_ALL 100

typedef struct{
    char nome[30];
    int telefone;
} Contato;

int main(){
	Contato Lista [MAX_X];
}

Colocar as funções em uma biblioteca a parte (Ex: "funcoes.h"), pois deixa o main mais limpo e com melhor visibilidade dos passos que estão sendo feitos.

#include "funcoes.h"

Por ultimo, algo muito útil que esquecemos ou esperamos a finalização do código para fazer, comentar o código.
Algo que eu não havia visto é que você não declarou o protótipo das suas funções antes do main:

#include <stdio.h>
#define MAX_ALL 100

typedef struct{
    char nome[30];
    int telefone;
} Contato;

void MostrarMenu();

int main(){
	Contato Lista [MAX_X];
}

void MostraMenu(){
    printf("\n====== AGENDA TELEFONICA ======\n\n");
    printf("\n====== MENU ======\n");
    printf("Informe a opcao desejada:\n\n");
    printf("1) Adicionar um contato a agenda.\n");
    printf("2) Remover um contato da agenda.\n");
    printf("3) Lista de contatos cadastrados da agenda.\n");
    printf("4) Buscar contato na agenda.\n");
    printf("5) Editar contato da agenda.\n");
    printf("6) Sair.\n\n");
}

 

Editado por Kelvin Isael Seibt
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@XXXGABIRU     seu código está bom , mas estava com alguns erros,  então  apenas organizei  e ele ficou assim :

#include <stdio.h>
#include <stdlib.h>

#define RETORNA_MENU 0
#define MAX_X 100
#define MAX_NOME 100
#define MAX_TELEFONE 10

int  qtdContatos = 0;
char Contatos_Totais[MAX_X][MAX_NOME];
char Telefones_Totais[MAX_X][MAX_TELEFONE];
void MostraMenu       ();
void MostraMenu       ();
void Listagem_Contatos();
void Listagem_Contatos();
void cadastrar        ();
void Remover_Contato  ();
void Buscar_Contato   ();
int main(){
    char **ptrNomes,op='s';
    char **ptrTelefones;
    ptrNomes = &Contatos_Totais;
    ptrTelefones = &Telefones_Totais;
    int opcao;
    while(opcao != 6){
        MostraMenu();
        scanf("%d",&opcao);
        switch(opcao){
        case 1: /*// ADICIONA CONTATO A LISTA.*/
            cadastrar();
            break;
        case 2: /*// REMOVE CONTATO DA LISTA.*/
            Remover_Contato();
            break;
        case 3: /*// FAZ A LISTAGEM DE TODOS OS CONTATOS CADASTRADOS.*/
            Listagem_Contatos();
            break;
        case 4: /*// BUSCA informações INDIVIDUAIS DE UM CONTATO.*/
            Buscar_Contato();
            break;
        /*case 5: // EDITA informações DE UM CONTATO.
            Editar_Contato();
            break;*/
        case 6:
            printf("Saindo Da Agenda . . . !\n\n");
            return 0;
        default:
            printf("Opcao incorreta.\n\n");
        }
    }
}
void MostraMenu(){
    system("cls");
    printf("\n====== AGENDA TELEFONICA ======\n\n");
    printf("\n============ MENU =============\n"  );
    printf("Informe a opcao desejada:\n"          );
    printf("1) Adicionar um contato a  agenda.\n" );
    printf("2) Remover   um contato da agenda.\n" );
    printf("3) Lista de contatos cadastrados da agenda.\n");
    printf("4) Buscar contato na agenda.\n");
    printf("5) Editar contato da agenda.\n");
    printf("6) Sair.\n\n");
    }
void Remover_Contato(){
    char flag='p',nome[20];
    int j,w;
    printf("Digite o nome para remover ");
    fflush(stdin);
    gets(nome);
    for(j=0;j<qtdContatos;j++){
        if(strcmp(nome,Contatos_Totais[j])==0){
            for(w=j;w<qtdContatos;w++){
                strcpy(Contatos_Totais [w],Contatos_Totais [w+1]);
                strcpy(Telefones_Totais[w],Telefones_Totais[w+1]);
                flag='w';
                qtdContatos--;
            }
        }
    }
    if(flag=='p')printf("Contato Inexistente !\n");
    else printf("Contato Removido Com Sucesso !\n");
    system("pause");
}
void cadastrar(){
    char op;
    do{
        printf("\n-- Cadastro de novo contato --\n");
        printf("Nome do contato: ");
        fflush(stdin);
        gets(Contatos_Totais[qtdContatos]);
        printf("Telefone do contato: ");
        fflush(stdin);
        gets(Telefones_Totais[qtdContatos]);
        printf("Contato Cadastrado!\n\n");
        qtdContatos++;
        printf("Quer Cadastra Outro S/N");
        fflush(stdin);
        scanf("%c",&op);
    }while(op!='n');
}
void Listagem_Contatos(){
    int i = 0;
    int j = 0;
    printf("\n======= LISTA DE CONTATOS CADASTRADOS =======\n");
    if(qtdContatos==0)printf("Não Tem Nenhum Cadastro\n");
    for(j=0;j<qtdContatos;++j){
        printf("*** Contato %d ***\n",j+1);
        printf("Nome: ----- %s\n",Contatos_Totais[ j]);
        printf("Telefone: - %s\n",Telefones_Totais[j]);
        printf("\n");
    }
    system("pause");
}
void Buscar_Contato(){
    char nom[20];
    int i,j,flag=0;
    system("cls");
    printf("\n   Digite O Nome ");
    fflush(stdin);
    gets(nom);
    for(i=0;i<qtdContatos;i++){
        if(strcmp(nom,Contatos_Totais[i])==0){
            flag=1;
            printf("Encontrado O Cadastro %d\n",i+1);
            printf("Nome: ----- %s\n",Contatos_Totais[i]);
            printf("Telefone: - %s\n",Telefones_Totais[i]);
            printf("\n");
        }
    }
    if(flag==0)printf("Cadastro Não Encontrado !\n");
    system("pause");
}

 

Editado por devair1010
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×