Usuários online

sexta-feira, 11 de novembro de 2011

Introdução a Algoritmos - Aula 11/11/2011 (Agenda com Struct)

Agenda com struct

Na aula de ontem introduzimos o conceito de estruturas e vetores de estruturas, bem como alguns comandos de leitura/escrita e manipulação de estruturas em C/C++.

Agora apresentamos uma agenda telefônica completa que usa struct para armazenar as informações de nome e telefone. De quebra, você ainda verá como pode ser feito um menu simples para uma aplicação em C/C++.

SUGESTÃO
Tente alterar a agenda acrescentando mais informações para serem armazenadas, como endereço, cidade, estado, cep, e-mail etc.

LEMBRETE
Esta agenda só funciona enquanto o programa está em execução (tudo está na memória e quando você sair do programa, tudo se perderá, portanto, não se empolgue em cadastrar todos os seus amigos).


#include <cstdlib>
#include <iostream>

using namespace std;

struct agenda {
    int cod;
    char nome[30];
    int tel;
    int vazio; //VAZIO = 0 e DISPONIVEL = 1.
} registros[100];

void cadastrar(int cod, int pos);
void consultar();
int verifica_pos();
void zerar();
int verifica_cod(int cod);
void excluir();

int main(int argc, char *argv[]) {
    zerar();
    int op=0,retorno,codaux,posicao;
    while(op!=4){
       printf("\n\n\t\t\t\t** AGENDA **\n\n\nMENU\n\n1 - Cadastrar\n2 - Consultar\n3 - Excluir\n4 - Sair\n\nOpcao:  ");
       scanf("%d",&op);
       fflush(stdin);
       switch(op) {
           case 1: {                  // CADASTRAR
                posicao=verifica_pos();
                if (posicao!=-1) {
                printf("\nEntre com o codigo desejado\n");
                scanf("%d",&codaux);fflush(stdin);
                   retorno=verifica_cod(codaux);
                   if (retorno==1)
                      cadastrar(codaux,posicao);
                   else
                      printf("\nCodigo ja existente\n");
                }
                else
                  printf("\nA agenda esta cheia\n");  
           break;
           }
         
           case 2: {                  // CONSULTAR
                consultar();
           break;  
           }
         
           case 3: {
                excluir();
           break;
           }
         
           case 4: {
                printf("\n\nTchau\n\n");
           break;
           }
       }
    }
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

void cadastrar(int cod, int pos) {
    pos=verifica_pos();
    registros[pos].cod=cod;
    printf("\nNome:\n");
    gets(registros[pos].nome);
    printf("\nTelefone\n");
    scanf("%d",&registros[pos].tel);
    registros[pos].vazio=1;
    printf("\nCadastro Realizado com Sucesso!\n\n");
}

void consultar() {
    int cont=0, cod;
    printf("\nEntre com o codigo\n");
    scanf("%d",&cod);
    while(cont<=100) {
        if (registros[cont].cod==cod) {
           if (registros[cont].vazio==1) {
              printf("\nNome: %s",registros[cont].nome);
              printf("\nTelefone: %d",registros[cont].tel);
              break;
           }
        }
        cont++;
        if (cont>100)
           printf("\nCodigo nao encontrado\n");
    }                        
}

int verifica_pos() {
    int cont=0;
    while (cont<=100) {
          if (registros[cont].vazio==0)
             return(cont);
          cont++;  
    }
    return(-1);
}

void zerar() {
    int cont;
    for (cont=0;cont<=100;cont++)
        registros[cont].vazio=0;
}

int verifica_cod(int cod) {
    int cont=0;
    while (cont<=100) {
       if (registros[cont].cod==cod)
          return(0);
       cont++;
    }
    return(1);
}

void excluir() {
    int cod, cont=0;
    printf("\nEntre com o codigo do registro que deseja excluir\n");
    scanf("%d",&cod);
   
    while (cont<=100) {
          if (registros[cont].cod==cod)
             if (registros[cont].vazio==1) {
                registros[cont].vazio=0;
                printf("\nExclusao feita com sucesso\n");
                break;
             }
          cont++;
          if (cont>100)
             printf("\nCodigo nao encontrado\n");
    }
}

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.

LinkWithin

Related Posts Plugin for WordPress, Blogger...

NOSSO OBJETIVO

OBJETIVO

Este blog será usado para divulgação de minhas ideias, notícias sobre tecnologia, disponibilização de links para download de materiais diversos (incluindo materiais didáticos -- que poderão ser usados em minhas aulas e/ou cursos). Gostaria de DEIXAR BEM CLARO que quaisquer materiais disponibilizados através deste blog são, tão somente, para acompanhamento de aulas e/ou cursos, e não constituem de modo algum, aulas na modalidade "ensino à distância" (EAD). Alunos têm total acesso aos materiais disponíveis, mas somente como tutoriais passo a passo. Apostilas disponibilizadas através deste blog não são materiais obrigatórios em disciplinas cursadas ou cursos ministrados.

RESPONSABILIDADE

O autor deste blog não é responsável pelo mau uso, intencional ou não, de qualquer código de programa disponibilizado aqui. Os códigos de programas disponíveis neste blog para download é e serão sempre, e tão somente, para uso didático durante o aprendizado. Seja bem-vindo.