Ir ao conteúdo
  • Cadastre-se

C Sistema de locadora de filmes


Kalli

Posts recomendados

Opa galera, boa noite! Estou travado em uma parte do meu código, onde preciso criar uma função para alugar certo filme. Meu raciocino era do usuário digitar o código do filme e logo após isso, eu verificaria o código deste determinado filme e verificaria se já havia sido alugado ou não, porém não consegui aplicar isso na prática. Vocês poderiam me ajudar ? 

 

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

struct cadastroF {
    char nomeFilme[50];
    char generoFilme[50];
    int codigoFilme;
};

typedef struct cadastroF Cadastro;

void main() {
    
    Cadastro cadF[3];
    int opcao;
    int i;
    int quant;
    int codigo;
    int resp;
    int alugado;
    float preco = 10; 
    int tempo = 3;
        
    while(opcao != 7) {
        
        printf("\n===== LOCADORA THE BEST FILMES =====\n");
        
        printf("\n1 - Cadastrar Filme \n");
        printf("2 - Lista de Filme \n");
        printf("3 - Pesquisar Filme \n");
        printf("4 - Alterar Filme \n");
        printf("5 - Excluir Filme \n");
        printf("6 - Alugar Filme \n");
        printf("7 - Sair\n");
        
        printf("\nSelecione a opção desejada: ");
        scanf("%d", &opcao);
        
        switch(opcao) {
            case 1:
                
                printf("Quantos filmes você deseja cadastrar: ");
                scanf("%d", &quant);
                
                for (i = 0; i < quant; i++) {

                printf("Código do filme: ");
                scanf("%d", &cadF[i].codigoFilme);
                getchar();
                
                printf("Nome do filme: ");
                fgets(cadF[i].nomeFilme, 50, stdin);
               
                printf("Gênero do filme: ");
                fgets(cadF[i].generoFilme, 50, stdin);

                printf("\nFilme cadastrado com SUCESSO!\n");
                }
            
                break;  
                
            case 2:
                    
                printf("\n----------LISTA DOS FILMES-----------\n");
                
                for (i = 0; i < quant; i++) {
                    
                printf("Filme: %s", cadF[i].nomeFilme);
                printf("Genero: %s", cadF[i].generoFilme);
                printf("Código: %d\n", cadF[i].codigoFilme);
            
                }
                
                break;
                
            case 3:

                printf("Digite o código do filme: ");
                scanf("%d", &codigo);
                fflush(stdin);
                
                for (i = 0; i < 1; i++) {
                    if(cadF[i].codigoFilme == codigo) {
                        printf("Filme: %s", cadF[i].nomeFilme);
                        printf("Gênero: %s", cadF[i].generoFilme);
                    } 
                    else
                        printf("Código digitado não encontrado!");
                }
                
                break;
                
            case 4:
            
                printf("Digite o código do filme que deseja alterar: ");
                scanf("%d", &codigo);
                
                for(i = 0; i < 1; i++) {
                    if(cadF[i].codigoFilme == codigo) {
                        printf("Filme: %s", cadF[i].nomeFilme);
                        printf("Gênero: %s", cadF[i].generoFilme);
                        getchar();
                
                        printf("Altere o nome do Filme: ");
                        fgets(cadF[i].nomeFilme, 50, stdin);

                        printf("Altere o genero do Filme: ");
                        fgets(cadF[i].generoFilme, 50, stdin);

                        printf("\nFilme ALTERADO com SUCESSO!\n");
                        
                    }
                    else
                        printf("Código digitado não encontrado!");
                }
                
                break;
                
            case 5:
                break;
                
            case 6:
                
                printf("Informe o código do filme: ");
                scanf("%d", &codigo);
                
                for (i = 0; i < quant; i++) {
                    if(cadF[i].codigoFilme == codigo) {
                        printf("Filme: %s", cadF[i].nomeFilme);
                        printf("Gênero: %s", cadF[i].generoFilme);
                        printf("Preço: R$%.2f.\n", preco);
                        printf("Tempo de alocação: %d dias.", tempo);
                        if(cadF[i].codigoFilme != alugado) {
                            printf("\nFilme disponível!\nDeseja alugar? 1 - Sim / 2 - Não -> ");
                            scanf("%d", &resp);
                            if(resp == 1) {
                                printf("\nFilme alugado com SUCESSO!\n");
                            }
                            else
                                break;
                        }
                        else {
                            printf("Este filme já foi alugado!\n");
                            printf("Ele estará disponível em %d dias.", tempo);
                        }
                    }
                }
                break;
        }
    }           
}

 

Link para o comentário
Compartilhar em outros sites

Você tem que colocar na estrutura se o filme já foi alugado ou não.

struct cadastroF {
    char nomeFilme[50];
    char generoFilme[50];
    int codigoFilme;
    int disponivel;
};

Depois é só fazer um loop e salvar a posição do filme no vetor e se ele foi encontrado.

Exemplo

                /* Busca o filme */
                contador2 = filme_encontrado = 0;
                do {
                    if (codigo == filmes[contador2].codigo) {
                        filme_encontrado = 1;   /* Marca que o filme foi encontrado */
                        local_filme = contador2;   /* Salva a posição em que o filme esta */
                    }
                    contador2++;
                } while (contador2 < Q_FILMES && filme_encontrado == 0);
                
                /* Verifica se o filme foi encontrado */
                if (filme_encontrado == 1) {
                    printf("%s filme com o codigo %i encontrado\n", filmes[local_filme].nome, filmes[local_filme].codigo);
                    printf("1\\sim 2\\não:");
                    scanf("%i%*c", &opcao);
                    if (opcao == 1) {
                        filmes[local_filme].disponivel = 0;
                        printf("Filme alugado!\n");
                    } else {
                        printf("filme não encontrado\n");
                    }
                    printf("Pressione enter para continuar\n");
                    getchar();
                }

 

Exemplo completo

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

#define T_NOME 60
#define T_GENERO 90

#define Q_FILMES 3

struct container_filme
{
    char nome[T_NOME];
    char genero[T_GENERO];
    int codigo;
    int disponivel;
};

void
inicia_filmes(struct container_filme *f)
{
    sprintf(f[0].nome, "Tubarao");
    sprintf(f[0].genero, "Terror, acao, suspense");
    f[0].codigo = 302;
    f[0].disponivel = 1;
    
    sprintf(f[1].nome, "A casa de vidro");
    sprintf(f[1].genero, "Terror, acao, suspense");
    f[1].codigo = 343;
    f[1].disponivel = 1;
    
    sprintf(f[2].nome, "Beverly Hills Cop");
    sprintf(f[2].genero, "Acao, comedia");
    f[2].codigo = 375;
    f[2].disponivel = 1;
}

int main(void)
{
    int
        opcao,
        contador1,
        contador2,
        codigo,
        filme_encontrado,
        local_filme;
    struct container_filme filmes[Q_FILMES];
    
    inicia_filmes(filmes);
    
    do {
        printf("Digite uma das opções abaixo\n");
        printf("1-Listar filmes no sistema\n");
        printf("2-Aluga filme\n");
        printf("3-Sair\n");
        scanf("%i%*c", &opcao);
        
        switch (opcao) {
            case 1:
                for (contador1 = 0; contador1 < Q_FILMES; contador1++) {
                    printf("informações do filme\n");
                    printf("Nome:%s\n", filmes[contador1].nome);
                    printf("Genero:%s\n", filmes[contador1].genero);
                    printf("Codigo:%i\n", filmes[contador1].codigo);
                    if (filmes[contador1].disponivel) {
                        printf("Esta disponivel para alugar!\n");
                    } else {
                        printf("não esta disponivel para alugar!\n");
                    }
                    printf("\n");
                }
                break;
            
            case 2:
                for (contador1 = 0; contador1 < Q_FILMES; contador1++) {
                    printf("informações do filme\n");
                    printf("Nome:%s\n", filmes[contador1].nome);
                    printf("Genero:%s\n", filmes[contador1].genero);
                    printf("Codigo:%i\n", filmes[contador1].codigo);
                    if (filmes[contador1].disponivel) {
                        printf("Esta disponivel para alugar!\n");
                    } else {
                        printf("não esta disponivel para alugar!\n");
                    }
                    printf("\n");
                }
                
                printf("Digite o codigo do filme que voce deseja alugar\n");
                scanf("%i%*c", &codigo);
                /* Busca o filme */
                contador2 = filme_encontrado = 0;
                do {
                    if (codigo == filmes[contador2].codigo) {
                        filme_encontrado = 1;
                        local_filme = contador2;
                    }
                    contador2++;
                } while (contador2 < Q_FILMES && filme_encontrado == 0);
                
                /* Verifica se o filme foi encontrado */
                if (filme_encontrado == 1) {
                    printf("%s filme com o codigo %i encontrado\n", filmes[local_filme].nome, filmes[local_filme].codigo);
                    printf("1\\sim 2\\não:");
                    scanf("%i%*c", &opcao);
                    if (opcao == 1) {
                        filmes[local_filme].disponivel = 0;
                        printf("Filme alugado!\n");
                    } else {
                        printf("filme não encontrado\n");
                    }
                    printf("Pressione enter para continuar\n");
                    getchar();
                }
                break;
        }
    } while (opcao != 3);
    return(0);
}

 

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!