Você está na página 1de 3

// Gabarito da Questão 5 por Caio Medeiros (Realizadas pequenas modificações por

Talita)
#include <stdio.h>
#include <stdlib.h>

typedef struct {
char fileira;
int assento;
int tipo;
} Ingresso;

typedef struct {
Ingresso ingressos[30];
int quantidade;
} SessaoCinema;

void vendaIngresso(SessaoCinema *sessao, char fileira, int assento, int tipo) {


if (sessao->quantidade < 30) {
Ingresso novoIngresso;
novoIngresso.fileira = fileira;
novoIngresso.assento = assento;
novoIngresso.tipo = tipo;

sessao->ingressos[sessao->quantidade] = novoIngresso;
sessao->quantidade++;
}
}

float faturamentoSessao(SessaoCinema sessao) {


float valorIngresso = 20.0;
float faturamento = 0.0;
int i;
for (i = 0; i < sessao.quantidade; i++) {
int tipoIngresso = sessao.ingressos[i].tipo;

if (tipoIngresso == 1) {
faturamento += valorIngresso;
} else if (tipoIngresso == 2) {
faturamento += valorIngresso / 2.0;
}
}

return faturamento;
}

int main() {
SessaoCinema sessaoMario;
sessaoMario.quantidade = 0;

vendaIngresso(&sessaoMario, 'A', 1, 1);


vendaIngresso(&sessaoMario, 'B', 3, 1);
vendaIngresso(&sessaoMario, 'C', 5, 1);
vendaIngresso(&sessaoMario, 'A', 2, 1);
vendaIngresso(&sessaoMario, 'B', 4, 1);
vendaIngresso(&sessaoMario, 'C', 6, 1);
vendaIngresso(&sessaoMario, 'A', 3, 1);
vendaIngresso(&sessaoMario, 'B', 5, 1);
vendaIngresso(&sessaoMario, 'C', 7, 2);
vendaIngresso(&sessaoMario, 'A', 4, 3);
float faturamento = faturamentoSessao(sessaoMario);
printf("Faturamento da sessao: R$ %f\n", faturamento);

return 0;
}

// Gabarito da Questão 5 por Lucas Cunha


#include <stdio.h>
#include <stdlib.h>

typedef struct reg_no {


char fileira;
int assento;
int tipo;
struct reg_no *prox;
} no;

no* cria_ingresso(char fileira, int assento, int tipo) {


no *novo_no = (no *) malloc(sizeof(no));
novo_no->fileira = fileira;
novo_no->assento = assento;
novo_no->tipo = tipo;
novo_no->prox = NULL;
return novo_no;
}

int estah_vazia (no *lista) {


if (lista == NULL)
return 1;
else return 0;
}

void insere_no_fim(no* *lista, char fileira, int assento, int tipo) {


no *novo_no = cria_ingresso(fileira, assento, tipo);
if (estah_vazia (*lista)){
*lista = novo_no;
} else {
no *no_atual = *lista;
while (no_atual->prox != NULL) {
no_atual = no_atual->prox;
}
no_atual->prox = novo_no;
}

int valor_total (no *lista) {


no *no_atual;
int total = 0;
no_atual = lista;
while (no_atual != NULL) {
if (no_atual->tipo == 1) {
total += 20;
} else if (no_atual->tipo == 2){
total += 10;
}
no_atual = no_atual->prox;
}
return total;
}

void libera_lista(no *lista) {


no *no_atual, *prox_no;
no_atual = lista;
while (no_atual != NULL) {
prox_no = no_atual->prox;
free(no_atual);
no_atual = prox_no;
}
}

int main() {
no *sessao = NULL;

insere_no_fim(&sessao, 'A', 7, 1);


insere_no_fim(&sessao, 'B', 4, 1);
insere_no_fim(&sessao, 'A', 9, 1);
insere_no_fim(&sessao, 'C', 6, 1);
insere_no_fim(&sessao, 'A', 2, 1);
insere_no_fim(&sessao, 'B', 5, 1);
insere_no_fim(&sessao, 'A', 3, 1);
insere_no_fim(&sessao, 'B', 2, 1);
insere_no_fim(&sessao, 'C', 1, 2);
insere_no_fim(&sessao, 'C', 4, 3);

printf("%d", valor_total(sessao));

libera_lista(sessao);
}

Você também pode gostar