Ir ao conteúdo

Posts recomendados

Postado

Eu to tendo que fazer um trabalho para a faculdade em que tenho que desenvolver um programa de reservas de assentos em C, um dos tópicos é verificar uma quantidade n de assentos em um mesmo vetor todos dispostos lado a lado, e anunciar se eles tiverem disponíveis;

Bom como cada assento armazena uma struct com nome, idade e sexo, foi pensado que quando o assento tiver livre a idade vai ser -1 (Afinal não existe idade negativa) Isso me deu duas duvidas, Como faço pra ler esses vários elementos de um vetor, e como faço para anunciar essa idade = -1. Sobre a idade eu to encontrando um problema que mesmo alterando informações dentro do switch/case 1 por exemplo, elas não mudam no case 2. Vocês tem alguma ideia de como ajudar? Agradeço desde já

Postado
3 minutos atrás, herbertbahia disse:

struct? esse exercício não seria de matriz? como esta seu codigo?

Exatamente, é uma matriz, e cada elemento dela guarda uma struct de um cliente com (nome, sexo,idade)

Esse é o código, inclusive se achar outros erros eu ficaria muito agradecido se me disser. 

#include <stdio.h>
#include <math.h>
struct Cliente
{
 char nome [100], sexo [1];
 int idade;

};


int main (){
int opcao,fileiras,fileiraUnica,colunas,colunaUnica,totalassentos,contadorm,contadorf,idade,lugarA,lugarB,i,j;
char nome, sexo, confirmar;
float ingresso,meia;
idade=-1;
int assentos,fila;

 printf("\n**********************************************************\n");
    printf("Bem vindo CINEMAX! Para comecar digite o tamanho do nosso cinema\n Primeiro quantas fileiras: ");
    scanf ("%d",&fileiras);
    printf ("Agora diga quantas colunas: ");
    scanf ("%d",&colunas);
    printf("\n**********************************************************\n");
    printf("Agora digite o valor do ingresso inteiro: R$");
    scanf("%f",&ingresso);
    meia = ingresso/2;
    int cinema [fileiras][colunas];
    totalassentos=fileiras*colunas;
            while (1){
                 printf("\n**********************************************************\n");
                printf("Opcao 1 - Consultar situacao de um assento especifico:\n");
                printf("Opcao 2 - Consultar disponibilidade de varios assentos em uma unica fila:\n");
                printf("Opcao 3 - Reservar assentos:\n");
                printf("Opcao 4 - Cancelar bilhete:\n");
                printf("Opcao 5 - Visualizar mapa de assentos:\n");
                printf("Opcao 6 - Visualizar relatorio:\n");
                printf("Opcao 7 - Fechar o programa\n");
                 printf("**********************************************************\n");
                printf("Escolha uma opcao: ");
                scanf("%i",&opcao);
                fflush(stdin);
                system("cls");

                struct Cliente cliente[fileiras][colunas];
                cliente[i][j].idade = -1;

                    switch (opcao)
                    {
                    case 1: //Consultar um assento específico
                        printf ("** Menu de Consulta de um assento *** \n");
                        printf ("Escolha a fila do assento: ");
                        scanf ("%d",&i);
                        printf ("Agora escolha a coluna: ");
                        scanf("%d",&j);
                        if  (cliente[i][j].idade >= 0)
                        {
                            printf("Esse lugar ja esta ocupado, por favor escolha outro.");
                        }
                        else
                        {
                            printf("O assento selecionado esta vago, selecione a opcao 3 no menu para compralo.");
                        }
                        break;
                    case 2: //Consultar vários assentos
                            printf("**** Menu de consulta de vários assentos ****");


                        break;
                    case 3: //Fazer reservas
                                printf("Quantos assentos voce vai querer? ");
                                scanf("%d",&assentos);
                                fflush(stdin);

                            for ( i=-1;i<assentos-1;i++){

                                printf("Diga qual fila voce gostaria os seus assentos: ");
                                scanf("%d",&fila);
                                printf("E qual a coluna do seu assento da fila %d voce gostaria? ",fila);
                                scanf("%d",&colunaUnica);
                                fflush(stdin);
                                system("cls");


                                fila = j;

                                printf("Qual o seu nome? ");
                                gets (cliente[i][j].nome);
                                fflush(stdin);

                                printf("\nQual a sua idade? ");
                                scanf("d",&cliente[i][j].idade);
                                fflush(stdin);

                                char sexolocal;
                                printf("\nQual o seu sexo? Por favor responda com M ou F: ");
                                scanf("%c",&sexolocal);

                                    while ( (sexolocal != 'm') && (sexolocal != 'f') )
                                    {
                                    printf("Resposta Invalida! Por favor responda novamente: ");
                                    scanf("%c",&sexolocal);
                                      }

                                    sexolocal = cliente[i][j].sexo;
                                    if (cliente[i][j].sexo =='m')
                                        contadorm++;
                                    else if (cliente[i][j].sexo == 'f')
                                        contadorf++;
                                fflush(stdin);
                                system("cls");
                            }
                        break;

                    case 4: //Cancelar bilhete

                        printf("** Menu de Cancelamento *** \n ");
                        printf("\nQual a fileira do assento desejado?  ");
                        scanf ("%d",&fileiraUnica);
                        printf("\nQual a coluna do seu bilhete? ");
                        scanf("%d",&colunaUnica);
                        printf("\nPor favor deseja confirmar o cancelamento? 's' para Sim e 'n' para Nao:  ");
                        scanf("c",&confirmar);

                        if (confirmar = 's')
                        {
                            cliente[fileiraUnica][colunaUnica].idade = -1;
                            break;
                        }
                        else
                        {
                           printf("*** voce voltará ao menu *** ");
                        break;
                        }
                   case 5: //Mostrar o mapa de assentos
                       for(i = 0; i < fileiras; i++) {

                         for(j = 0; j < colunas; j++) {
                            cliente[i][j].idade = -1;

                            if(j == 0)
                              {
                              printf("%d ", i);
                              }
                            else if (cliente[i][j].idade >= 0)
                              printf("X");
                            else
                              printf (".");
                          }
                        printf("\n");
                        }
                        printf("////////////// TELA //////////////");
                        break;
                    case 6: //Mostrar Relatório




                        break;
                    case 7: //fechar programa
                        printf("////////////////////////////////////////////////////////////////////");
                        printf ("\n   Muito obrigado pela preferência, um otimo dia e volte sempre!\t\n");
                        printf("///////////////////////////////////////////////////////////////////");

                        return 0;

                    }
          }
return 0;
}

 

Postado

image.png.0794d7fed0209bbcbee6178fa62d42cb.png

 

Seu programa não está bom. É um caminho difícil para resolver esse que escolheu.

Não misture as coisas: um cliente é um cliente apenas. 

Mantenha separado. 

 

Você sabe escrever funções para dividir seu programa de um jeito mais fácil de escrever?

Sabe como alocar e liberar memória, malloc(), free() essas coisas?

 

Veja o código abaixo, que não faz nada mas cria Poltrona, Cliente, Reserva e Sala. E se você partir de algo assim organizado pode ficar mais fácil...

#define _CRT_SECURE_NO_WARNINGS

#include "stdio.h"
#include "string.h"

struct _polt
{
    char    status;
    int     cliente;
    char    fileira;
    int     coluna; // A1 A2 B1 B2 ...
};
typedef struct _polt Poltrona;

struct _res
{
    int       cliente;
    Poltrona* poltrona;
};
typedef struct _res Reserva;

struct _sala
{
    char      nome[50];
    int       fileiras;
    int       colunas;
    Poltrona* poltronas;
    int       N; // identifica a sala
    char      valor_ticket[20];
    Reserva*  reservas;
};
typedef struct _sala Sala;

struct _cli
{
    int     idade;
    char    nome[100];
    int     N; // identifica o cliente
    char    sexo;
};
typedef struct _cli Cliente;

int	main(int argc, char** argv)
{
    Sala    UCI;
    strcpy(UCI.nome, "UCI Sala 8");
    strcpy(UCI.valor_ticket, "R$ 40,00");
    UCI.fileiras = 20;
    UCI.colunas = 40;
    UCI.N = 1;
    UCI.poltronas = NULL;
    UCI.reservas = NULL;
    return 0;
};	// end main()

 

  • Curtir 1
Postado
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <windows.h>
#include <conio.h>

char mat[80][80][20];
int i,j,a,b,totalassentos,opcao,mat2[80][80];
float ingresso;
void preencher_tabuleiro(){
    for( i=0; i<a; i++ ){
        for( j=0; j<b; j++ ){
            strcpy(mat[i][j],"[ ]");
        }
    }
}
void preencher_caractere(){
	system("cls");
    int linha, coluna, espacos, contador;
 
    printf("Quantos assentos quer reservar? ");
    scanf ("%d", &espacos);
    contador = 0;
    while(contador < espacos){
        printf("Informe a linha do assento: ");
        scanf ("%d", &linha);
        printf("Informe a coluna do assento: ");
        scanf ("%d", &coluna);
        strcpy(mat[linha-1][coluna-1],"[X]");
        mat2[linha-1][coluna-1]=1;
        contador = contador + 1;
    }
}
void cancelar(){
	system("cls");
    int linha, coluna, espacos, contador;
 
    printf("Quantos assentos quer cancelar? ");
    scanf ("%d", &espacos);
    contador = 0;
    while(contador < espacos){
        printf("Informe a linha do assento: ");
        scanf ("%d", &linha);
        printf("Informe a coluna do assento: ");
        scanf ("%d", &coluna);
        strcpy(mat[linha-1][coluna-1],"[ ]");
        mat2[linha-1][coluna-1]=0;
        contador = contador + 1;
    }
}

void consulta(){
    int linha, coluna;
        printf("Informe a linha do assento: ");
        scanf ("%d", &linha);
        printf("Informe a coluna do assento: ");
        scanf ("%d", &coluna);
        system("cls");
        if(mat2[linha-1][coluna-1]==0){
        printf("O assento Esta vazio\n\n");
        }
        else{
        printf("O assento Esta ocupada\n\n");
        }
    }
    
    void consulta2(){
    int livre;
        for( i=0; i<a; i++ ){
        	if(mat2[0][i]!=1)
        	livre+=1;	
		}
		printf("A disponibilidade maxima de uma unica fila: %d\n",livre);
    }

void exibe_tabuleiro(){
	system("cls");
    for( i=0; i<a; i++ ){
        printf("\t\t");
        for( j=0; j<b; j++ ){
            printf("%s",mat[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}



int main(){
	printf("\n**********************************************************\n");
    printf("Bem vindo CINEMAX! Para comecar digite o tamanho do nosso cinema\n Primeiro quantas fileiras: ");
    scanf ("%d",&a);
    printf ("Agora diga quantas colunas: ");
    scanf ("%d",&b);
    printf("\n**********************************************************\n");
    preencher_tabuleiro();
   exibe_tabuleiro();
   totalassentos = a*b;
   printf("Este cinema tem: %d assentos.\n",totalassentos);
    printf("Agora digite o valor do ingresso : R$");
    scanf("%f",&ingresso);
    printf("Meia entrada custa :R$ %.2f\n\n",ingresso/2);
   
   while (1){
   				printf("**********************************************************\n");
                printf("Opcao 1 - Reservar assentos:\n");
                printf("Opcao 2 - Cancelar bilhete:\n");
                printf("Opcao 3 - Visualizar relatorio:\n");
                printf("Opcao 4 - Fechar o programa\n");
                printf("Opcao 5 - Consultar situacao de um assento especifico:\n");
                printf("Opcao 6 - Consultar disponibilidade de varios assentos em uma unica fila:\n");
                 printf("**********************************************************\n");
                printf("Escolha uma opcao: ");
                scanf("%d",&opcao);
                 switch (opcao)
                    {
                    case 1: 
					preencher_caractere();
   						exibe_tabuleiro();
                        break;
                        case 2:
                        	cancelar();
                        	exibe_tabuleiro();
                        	 break;
                        	 case 3:
                        	 	//Mostrar Relatório
                        break;
                        	 case 4:
                        	 	printf("////////////////////////////////////////////////////////////////////");
                        printf ("\n   Muito obrigado pela preferência, um otimo dia e volte sempre!\t\n");
                        printf("///////////////////////////////////////////////////////////////////");
                        return EXIT_SUCCESS;
                        break;
                        	case 5:
                        		consulta();
                        		break;
                        	case 6:
                        		consulta2();
                       break;
}
}
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!