Advertisement
hmcristovao

Lista 11 - exemplo 1

Aug 20th, 2013
314
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. // TAD (Tipo Abstrato de Dados) - lista de aniversariantes
  2. // Versão 1: vetor de estruturas (desperdício de memória)
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. #define MAX_LISTA_VETOR 50
  8. #define MAX_CARACTERES_NOME 20
  9.  
  10. typedef struct {
  11.    int dia, mes;
  12. } DataAniver;
  13.  
  14. typedef struct {
  15.    char apelido[MAX_CARACTERES_NOME];
  16.    DataAniver dataAniver;
  17. } Aniversariante;
  18.  
  19. typedef struct {
  20.    int qtde;
  21.    Aniversariante vetor[MAX_LISTA_VETOR];
  22. } Lista;
  23.  
  24. // protótipos
  25. void inicia(Lista *lista);
  26. int insere(Lista *lista, Aniversariante *elemento);
  27. void entrada(Aniversariante *elemento);
  28. void exibe(Aniversariante *elemento);
  29.  
  30. // Inclui 2 aniversariantes na lista
  31. int main() {
  32.    // cria a lista alocando espaço para todos os aniversariantes, independente de usar ou não
  33.    Lista lista;
  34.    inicia(&lista);
  35.  
  36.    Aniversariante aux;
  37.  
  38.    // entrada e armazenamento do primeiro aniversariante
  39.    entrada(&aux);
  40.    insere(&lista,&aux);
  41.  
  42.    // entrada e armazenamento do segundo aniversariante
  43.    entrada(&aux);
  44.    insere(&lista,&aux);
  45.  
  46.    // exibe toda a lista de aniversariantes
  47.    int i;
  48.    for(i=0; i < lista.qtde; i++)
  49.       exibe(&(lista.vetor[i]));
  50.  
  51.    return 0;
  52. }
  53.  
  54. // inicializa a lista, ajustando a qtde para zero
  55. void inicia(Lista *lista) {
  56.     lista->qtde = 0;
  57. }
  58.  
  59. // insere um aniversariante na lista
  60. int insere(Lista *lista, Aniversariante *elemento) {
  61.    if(lista->qtde == MAX_LISTA_VETOR)
  62.       return 0; // indicação de erro: atingiu o limite da lista
  63.    lista->vetor[lista->qtde] = *elemento;
  64.    lista->qtde++;
  65.    return 1; // inclusão ok
  66. }
  67.  
  68. // recebe da entrada padrão os dados de um aniversariante e o coloca na memória "elemento"
  69. void entrada(Aniversariante *elemento) {
  70.    printf("\nEntre com o nome do aniversariante: ");
  71.    fflush(stdin);
  72.    gets(elemento->apelido);
  73.    printf("Entre com o dia e mes do aniversario: ");
  74.    scanf("%d %d", &elemento->dataAniver.dia, &elemento->dataAniver.mes);
  75. }
  76.  
  77. // exibe os dados de um aniversariante passado como argumento
  78. void exibe(Aniversariante *elemento) {
  79.    printf("\nNome: %s \nData do aniversario: %02d/%02d", elemento->apelido,
  80.            elemento->dataAniver.dia, elemento->dataAniver.mes);
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement