Declaração do TAD – Tipo Adstrato de Dado
/*
* Declaração do TAD para Enquetes
* Arquivo: enquete.h
*/
#ifndef ENQUETE_H
#define ENQUETE_H
//------ constantes ---------
#define CONTRA 1
#define FAVOR 2
#define ABSTENCAO 3
//------ Estrutura de Dados Heterogênea --------
typedef struct {
char* titulo;
char* texto;
int favor;
int contra;
int abstencao;
} Enquete;
//----- Operações ----------
// Protótipos de funções
void criarEnquete(Enquete*, char*, char*);
void votar(Enquete*, int);
void mostrarRes(Enquete);
#endif
Implementação do TAD
/*
* Implemantação do TAD para Enquetes
* Arquivo: enquete.c
*/
#include "enquete.h"
void criarEnquete(Enquete* enq, char* tit, char* tex) {
enq->titulo = tit;
enq->texto = tex;
enq->favor = 0;
enq->contra = 0;
enq->abstencao = 0;
}
void votar(Enquete* enq, int voto) {
if (voto == FAVOR) {
enq->favor++;
} else {
if (voto == CONTRA) {
enq->contra++;
} else {
if (voto == ABSTENCAO) {
enq->abstencao++;
}
}
}
}
void mostrarRes(Enquete e){
printf("\n------- E N Q U E T E ------\n");
printf("Titulo.........: %s\n", e.titulo);
printf("Texto..........: %s\n", e.texto);
printf("Votos a favor..: %d\n", e.favor);
printf("Votos contra...: %d\n", e.contra);
printf("Abstenções.....: %d\n", e.abstencao);
printf("================================\n");
}
Teste do TAD
/*
* Teste do TAD
* Arquivo: main.c ou testaEnquete.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "enquete.h"
int main(int argc, char *argv[]) {
//Variaveis para entrada de dados
char ti[30];
char te[200];
//Variavel enquete para teste do TAD
Enquete e1;
//Alimentando vars de entrada
strcpy(ti,"GALINHAS DE ESTIMAÇÃO");
strcpy(te,"Voce concorda com pessoas terem galinhas de estimacao?");
//Testa criarEnquete()
printf("Criando enquete......\n");
criarEnquete(&e1, ti, te);
//Verifica se enquete foi cria corretamente usando mostraRes()
printf("Enquete criada!\n");
mostrarRes(e1);
//Testa votar() com diferentes tipos de voto
printf("Registrando votos......\n");
votar(&e1, FAVOR);
votar(&e1, FAVOR);
votar(&e1, CONTRA);
votar(&e1, 2); //Vota a favor, pelo valor ref. a FAVOR
votar(&e1, ABSTENCAO);
//Verifica se votos foram registados adequadamente
printf("Resultado da votacao......\n");
mostrarRes(e1);
return 0;
}