ED1A2-TADS – Exemplo: uma Enquete

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;
}