Enviado em 01/05/2016 - 20:37h
Tenho um programa de ED, e temos que criar um programa que gerencie um cinema. Terminei meu código, está rodando, porém nao importa quantos valores eu insira em meu vetor, quando mando verificar ele sempre está vazio, nao estou conseguindo encontrar a lógicatypedef struct{
char filme[40];
float valor;
int ingresso;
int sala;
int codigo;
}cinema;
typedef struct{
int primeiro, ultimo;
cinema lugares[250];
}salas;
salas criarsala(){
salas aux;
aux.primeiro = 0;
aux.ultimo = -1;
return aux;
}
void menu(){
printf("\t\t+------------------------------------------------------------------------------+\n");
printf("\t\t|\tEscolha a opção desejada. |\n");
printf("\t\t|\t1. Comprar Ingresso. |\n");
printf("\t\t|\t2. Devolver Ingresso. |\n");
printf("\t\t|\t3. Imprimir todos os ingressos de uma determinada sala. |\n");
printf("\t\t|\t4. Calcular valor total de uma determinada sala. |\n");
printf("\t\t|\t5. Calcular total de lugares ocupados em uma sala; |\n");
printf("\t\t|\t6. Criar um backup da venda do dia ordenando ingressos por sala. |\n");
printf("\t\t|\t7. Calcular total de ingressos tipo meia. |\n");
printf("\t\t|\t8. Fechamento do dia: Limpas vendar e retornar valor total recebido. |\n");
printf("\t\t+------------------------------------------------------------------------------+\n");
printf("\t\t\tOpção: ");
}
// inserir item //
int verificarDisponibilidade(salas aux, int sala){
int i, lugar=0;
for (i=aux.primeiro; i<=aux.ultimo; i++){
if(aux.lugares[i].sala==sala)
lugar++;
}
return lugar;
}
salas inserirCliente(salas aux, int sala){
aux.ultimo++;
aux.lugares[aux.ultimo].sala=sala;
setbuf(stdin, NULL);
printf("\nInsira o nome do filme\n");
scanf("%[^\n]s", &aux.lugares[aux.ultimo].filme);
setbuf(stdin, NULL);
printf("\nInsira o valor do ingresso: R$ ");
scanf("%f", &aux.lugares[aux.ultimo].valor);
printf("\nInsira o tipo do ingresso\n 1. Inteira 2. Meia: ");
scanf("%d", &aux.lugares[aux.ultimo].ingresso);
printf("Insira ou crie o codigo do ingresso: ");
scanf("%d", &aux.lugares[aux.ultimo].codigo);
return aux;
}
int pesquisarItem(salas aux, cinema numero){
int posicao = -1;
int i=0;
for(i= aux.primeiro; i<=aux.ultimo; i++){
if(numero.codigo == aux.lugares[i].codigo){
posicao=i;
}
}
return posicao;
}
salas retirar(salas aux, cinema codigo){
int retorno = pesquisarItem(aux, codigo);
if(retorno == -1){
printf("Ingresso não encontrado! Impossível devolver");
}
else{
int i;
aux.ultimo--;
for(i=retorno; i <= aux.ultimo; i++){
aux.lugares[i] = aux.lugares[i+1];
}
}
return aux;
}
void imprimirSala(salas aux, int sala){
int i, vazio=0;
for(i=aux.primeiro; i<=aux.ultimo; i++){
if(aux.lugares[i].sala==sala){
vazio++;
printf("\nFilme %s", aux.lugares[i].filme);
printf("\nSala %d", aux.lugares[i].sala);
printf("\nValor R$ %.2f", aux.lugares[i].valor);
if(aux.lugares[i].ingresso==1)
printf("Entrada tipo Inteira.");
else
printf("Entrada tipo Meia.");
}
}
if (vazio==0){
printf("Sala Vazia");
}
}
void valorTotal(salas aux, int sala){
int i;
float valortotal=0;
for(i=aux.primeiro; i<aux.ultimo; i++){
if(aux.lugares[i].sala==sala){
valortotal+=aux.lugares[i].valor;
}
}
if (valortotal==0){
printf("Sala Vazia");
}
else
printf ("Valor total é R$: %.2f", valortotal);
}
void totalDeLugares(salas aux, int sala){
int i, repeticao=0;
for(i=aux.primeiro; i<=aux.ultimo; i++){
if(aux.lugares[i].sala==sala){
repeticao++;
}
}
if(repeticao==0)
printf("A sala está vazia");
else
printf("Existem %d lugares na sala", repeticao);
}
salas backup(salas aux){
salas backup;
int sala=1, i, cont=0;
do{
for(i=aux.primeiro; i<aux.ultimo; i++)
if(aux.lugares[i].sala==sala){
backup.lugares[cont]=aux.lugares[i];
cont++;
}
sala++;
}while(sala<=5);
return backup;
}
void imprimirTudo(salas backup){
int i, vazio=0;
for(i=backup.primeiro; i<backup.ultimo; i++){
if(backup.lugares[i].sala==2 || backup.lugares[i].sala==2 || backup.lugares[i].sala==3 ||
backup.lugares[i].sala==4 || backup.lugares[i].sala==5){
vazio++;
printf("\nFilme %s", backup.lugares[i].filme);
printf("\nSala %d", backup.lugares[i].sala);
printf("\nValor R$ %f", backup.lugares[i].valor);
if(backup.lugares[i].ingresso==1)
printf("Entrada tipo Inteira.");
else
printf("Entrada tipo Meia.");
}
}
if (vazio==0){
printf("Backup Vazio");
}
}
void totalMeia(salas aux){
int i, vazio=0;
float valortotal=0;
for(i=aux.primeiro; i<aux.ultimo; i++){
if(aux.lugares[i].ingresso==2){
vazio++;
valortotal+=aux.lugares[i].valor;
}
}
if (vazio==0){
printf("Nenhuma venda do tipo meia até o momento");
}
else
printf ("Valor total de ingressos tipo meia é R$: %f", valortotal);
}
salas fechamentoDoDia(salas aux){
int i;
float valortotal=0;
for(i=aux.primeiro; i<aux.ultimo; i++){
valortotal+=aux.lugares[i].valor;
}
aux.ultimo=-1;
aux.primeiro=0;
if (valortotal==0){
printf("Nenhum ingresso vendido.");
}
else
printf ("Valor total de ingressos é R$: %f", valortotal);
return aux;
}
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include "biblioteca.h"
/*
*
*/
int main() {
setlocale(LC_ALL, "Portuguese");
salas aux;
int op, exit, sala;
do{
// MENU //
menu();
scanf("%d", &op);
if (op==1){
printf("Insira o número da sala: ");
scanf("%d", &sala);
if (verificarDisponibilidade(aux, sala)<50){
inserirCliente(aux, sala);
}
else{
printf("\nNão há mais espaços na sala!");
}
} // fim da primeira opção
else if(op==2){
printf("\nInsira o codigo do filme que deseja devolver: ");
scanf("%d", &codigo.codigo);
retirar(aux, codigo);
} // fim da segunda opçao
else if(op==3){
printf("\nInsira o número da sala: ");
scanf("%d", &sala);
imprimirSala(aux, sala);
} // fim da terceira opção
else if(op==4){
printf("\nInsira o número da sala: ");
scanf("%d", &sala);
valorTotal(aux, sala);
} // fim da quarta opção //
else if(op==5){
printf("\nInsira o número da sala: ");
scanf("%d", &sala);
totalDeLugares(aux, sala);
} // fim da quinta opção //
else if(op==6){
backup(aux);
printf("Backup criado, deseja vê-lo agora?\n1. Sim 2.Nao ");
scanf("%d", &exit);
if(exit==1){
imprimirTudo(backup(aux));
}
} // fim da sexta opção //
else if(op==7){
totalMeia(aux);
} // fim da sétima opção //
else if(op==8){
fechamentoDoDia(aux);
} // fim da oitava opção //
else
printf("Opção Inválida!");
printf("\n\nDeseja fazer outra operação?\n1. Sim 2. Não ");
scanf("%d", &exit);
}while(exit==1);
return 0;
}