Ir ao conteúdo

C exercício de programação c


Ir à solução Resolvido por Annyy,

Posts recomendados

Postado

@arfneto  oi ,eu coloque os dados

15 horas atrás, arfneto disse:

N

isso é o que?

16 horas atrás, arfneto disse:

mapa

que variável e essa.

Em 22/05/2021 às 13:18, Annyy disse:

 como faço essa parte. já tentei. e não vai.

 

 

float arrecadacao_total_cinema(float soma[1]){
// somar a arrecadação de todos os filmes
//soma das 10 reservas
//retornar
return 0;
}
float total_reserva_cada_sala(float  total_reserva_sala[1]){
// quantidade de reservas que houve em cada filme
//retornar
return 0;
}
float taxa_de_ocupacao_sala(int sala_tamanho, int reservas_filmes_indice[1]){
   
    return 0;
}

 


 

 

Postado

Leu mesmo os programas que postei?

 

Em muitos lugares está escrito o que é N. E daria pra imaginar que é o total de sessões, aquele PRIMEIRO parâmetro de todos, o que o usuário vai entrar para dizer o número de sessões

 

 

Citação

A quantidade de filmes deve ser definida pelo usuário.Para cada filme,o programa deve ler:
o nome do filme,o turno de exibição e a quantidade de cadeiras disponíveis na sala onde
o filme será exibido [do enunciado]

 

3 horas atrás, Annyy disse:
19 horas atrás, arfneto disse:

mapa

que variável e essa.

 

unsigned mapa[13] = { 0 }; // a situacao das reservas para cada filme

 

que poderia ser um mapa nesse contexto? O mapa das vendas para cada sessão

 

3 horas atrás, Annyy disse:

como faço essa parte. já tentei. e não vai.

 

 

Eu te mostrei as seis funções. Como declarar e tal. Desde o início, desde a primeira versão, escrevendo em torno dos dados.

 

Mas no post anterior eu te mostrei a implementação, um exemplo de chamada e o resultado de cada uma das 6 funções, e mais uma descrição da lógica e dos parâmetros de entrada e saída. E um programa inteiro com dados e resultados. O que faltou?

 

Postado

Do modo como estava o programa já tem uma estrutura mínima para conter os dados (afinal já começou com os dados) e as seis funções já foram implementadas e tem aquele cuidado de não reservar mais que a metade das cadeiras livres e tal.

 

Não se quer mais mexer nisso. Mas tem uma estrutura em cinema.h que permitiria ir bem mais longe com o programa, com um modelo mais arrumado para as sessões e filmes.

 

E agora?

 

Esse programa é só um brinquedo e ninguém iria usar assim nem para teste, não fosse um enunciado: é muito chato a cada vez que roda o programa ter que digitar dezenas de dados de filmes e sessões e se não bastasse isso depois digitar 10 reservas.

 

MAs é o que o enunciado pede.

 

 

Como o resto parece ok falta apenas ler os filme e processar as reservas, colocando isso no lugar do que o programa já faz com os 12 filmes em 4 sessoes em 3 salas :)  na última fase do programa.

 

Então....

 

Um programa para ler os dados

#define LIMITE_ 300

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

int         le_filme(char*,unsigned*,unsigned*,unsigned);
void        mostra_turnos();

int main(int argc, char* argv[])
{
    const char* sessoes[] = { "", "14:00", "17:00", "20:00", "23:00" };
    unsigned    N = 0;
    char        buffer[LIMITE_];
    printf("\nCinema Movies\n\n\tTotal de filmes em cartaz: ");
    fgets(buffer, LIMITE_, stdin);
    N = (unsigned)atoi(buffer);
    if (N == 0) return -1;
    printf("\nSerao lidos dados relativos a %d sessoes\n\n", N);

    mostra_turnos(); // mostra a tabela de horarios

    char        filme[LIMITE_]; // um filme
    const unsigned  n_turnos = 4; // 4 sessoes no nosso cinema
    unsigned    poltronas;
    unsigned    turno; // sessao
    int         res = 0;

    // le os N filmes
    for (unsigned f = 0; f < N; )
    {   // le os filmes um a um. 4 sessoes
        res = le_filme(filme, &turno, &poltronas, n_turnos);
        if (res == 1)
        {   // leu o filme
            f += 1;
            printf("\tFilme: \"%20s\"\tHorario: %s. Lugares: %4d\n",
                filme, sessoes[(int)turno], poltronas);
        }
        else
        {
            if (res < 0) break;
        };  // if()
    };  // for()

    if (res < 0)
        printf("Erro tentando ler os filmes\n");
    else
        printf("Lidos %d filmes\n", N );
    return 0;
};  // main()


int         le_filme(
    char*       filme,
    unsigned*   turno,
    unsigned*   poltronas,
    unsigned    n_turnos)
{   // filme;turno;poltronas
    // retorna zero se nao ler nada ou se o turno for invalido
    // retorna =1 em caso de erro

    const char* mascara = "%[^;];%d;%d";
    char linha[250];
    printf("Filme [filme;turno;poltronas]: ");
    char* l = fgets(linha, 250, stdin); // le a primeira linha
    if (l == NULL) return -1; // arquivo vazio
    int res = sscanf(linha, mascara, filme, turno, poltronas );
    // testa o turno para o limite passado
    if ( (*turno == 0) || (*turno > n_turnos)) return 0;
    if (res < 3) return 0; // nao leu os 3 valores
    return 1; // ok
}


void        mostra_turnos()
{
    printf("O formato em uso: filme;turno;poltronas na sala\n\n");
    printf("\
\tSao 4 sessoes [1..4]:\n\n\
\t  1:  14:00\n\
\t  2:  17:00\n\
\t  3:  20:00\n\
\t  4:  23:00\n\n\
Entre com o nome do filme, o turno [1..4] e o \n\
    numero de cadeiras, separando os parametros\n\
    por ';'. Ex: filme 1;4;230 para o \"filme 1\"\n\
    passando as 23:00 (sessao 4) numa sala com\n\
    230 cadeiras\n\n");
    return;
}

 

Esse programinha mostra (trecho):

 


Cinema Movies

        Total de filmes em cartaz: 3

Serao lidos dados relativos a 3 sessoes

O formato em uso: filme;turno;poltronas na sala

        Sao 4 sessoes [1..4]:

          1:  14:00
          2:  17:00
          3:  20:00
          4:  23:00

Entre com o nome do filme, o turno [1..4] e o
    numero de cadeiras, separando os parametros
    por ';'. Ex: filme 1;4;230 para o "filme 1"
    passando as 23:00 (sessao 4) numa sala com
    230 cadeiras

Filme [filme;turno;poltronas]: file1;2;23
        Filme: "               file1"   Horario: 17:00. Lugares:   23
Filme [filme;turno;poltronas]: filme3 ; 2;22

 

Ou seja, mostra os horários, e lê os filmes e põe na estrutura que já funciona e que as funções usam.

 

O que falta? 

 

Ler as reservas. Isso é o que tinha no programa anterior e funcionou para as 6 funções. Então não há razão pra mexer

 


    // uma reserva corresponde a uma sessao e a um numero de poltronas
    unsigned as_reservas[][2] =
    {
        {1,12}, // filme 1, 12 lugares
        {1,15}, {3,2}, {12,4}, {11, 2},
        {1,15}, {5,2}, {2,4}, {12, 20},
        {4,25},
        {12,5},
        {10,75},  // para a sessao 10 vai tentar vender tudo
        {10,37}, {10,16}, {10,16},
        {10,11}, // 11 vai exceder o limite de metade das cadeiras
        {10,5}, {10,3},
        {10,1}, {10,1}, {10,1},
        // 37 + 16 + 16 + 5 + 1 + 1 + 1 = 75
        {0,0}
    };

 

Cada reserva é um par: { sessao, lugares } e basta ler 10 desses do usuário e preencher o vetor, e chamar as 6 funções como estão no programa anterior e acho que é só.

 

 

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!