Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TAD (Tipo Abstrato de Dados) - lista de aniversariantes
- // Versão 1: vetor de estruturas (desperdício de memória)
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX_LISTA_VETOR 50
- #define MAX_CARACTERES_NOME 20
- typedef struct {
- int dia, mes;
- } DataAniver;
- typedef struct {
- char apelido[MAX_CARACTERES_NOME];
- DataAniver dataAniver;
- } Aniversariante;
- typedef struct {
- int qtde;
- Aniversariante vetor[MAX_LISTA_VETOR];
- } Lista;
- // protótipos
- void inicia(Lista *lista);
- int insere(Lista *lista, Aniversariante *elemento);
- void entrada(Aniversariante *elemento);
- void exibe(Aniversariante *elemento);
- // Inclui 2 aniversariantes na lista
- int main() {
- // cria a lista alocando espaço para todos os aniversariantes, independente de usar ou não
- Lista lista;
- inicia(&lista);
- Aniversariante aux;
- // entrada e armazenamento do primeiro aniversariante
- entrada(&aux);
- insere(&lista,&aux);
- // entrada e armazenamento do segundo aniversariante
- entrada(&aux);
- insere(&lista,&aux);
- // exibe toda a lista de aniversariantes
- int i;
- for(i=0; i < lista.qtde; i++)
- exibe(&(lista.vetor[i]));
- return 0;
- }
- // inicializa a lista, ajustando a qtde para zero
- void inicia(Lista *lista) {
- lista->qtde = 0;
- }
- // insere um aniversariante na lista
- int insere(Lista *lista, Aniversariante *elemento) {
- if(lista->qtde == MAX_LISTA_VETOR)
- return 0; // indicação de erro: atingiu o limite da lista
- lista->vetor[lista->qtde] = *elemento;
- lista->qtde++;
- return 1; // inclusão ok
- }
- // recebe da entrada padrão os dados de um aniversariante e o coloca na memória "elemento"
- void entrada(Aniversariante *elemento) {
- printf("\nEntre com o nome do aniversariante: ");
- fflush(stdin);
- gets(elemento->apelido);
- printf("Entre com o dia e mes do aniversario: ");
- scanf("%d %d", &elemento->dataAniver.dia, &elemento->dataAniver.mes);
- }
- // exibe os dados de um aniversariante passado como argumento
- void exibe(Aniversariante *elemento) {
- printf("\nNome: %s \nData do aniversario: %02d/%02d", elemento->apelido,
- elemento->dataAniver.dia, elemento->dataAniver.mes);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement