S1ll3NT 0 Denunciar post Postado Agosto 4, 2016 Olá Sou novo aqui no fórum e iniciante em programação.Alguém pode me ajudar com esse exercício ? Espero que alguém possa me ajudar.Agradeço desde já Construa um algoritmo que armazene para 10 filmes, o código, o nome,o gênero (ação, aventura...), censura (em idade), tamanho do filme (em minutos), valor da locação, quantidade de mídias existentes e quantidade que já estão locadas. A cada final de cadastro, pergunte ao usuário se ele deseja cadastrar novo filme se a resposta for afirmativa e o numero máximo de filmes (no caso 10) não foi ultrapassado volte a cadastrar novo filme. Faça a locação dos filmes, no final do cadastro de cada locação, pergunte ao usuário se ele deseja cadastrar nova locação, se a resposta for afirmativa volte a cadastrar nova locação. Verifique antes de finalizar cada locação se quem está locando pode locar o filme desejado perguntando a idade do cliente, e verifique também se ainda tem mídia do filme disponível para locação, se nenhuma dessas restrições for constatada, faça a locação para o cliente acrescente o número de filmes locados na coluna quantidade de locações. Faça um relatório no qual constarão todos os filmes cadastrados contendo: o código do filme, o nome, o gênero, o valor de locação e quantos filmes estão disponíveis para locação. Faça também uma rotina para devolução dos filmes locados.Utilize Case para a construção do menu com as opções:1 - Cadastro2 - Locação3 - Devolução4 - Relatório de Filmes5 - Sobre6 - Sair Bom, até agora o que eu consegui fazer é isso #include <stdio.h>#include <conio.h>#include <stdlib.h>#include <locale.h>int main(){setlocale(LC_ALL,"");int menu;struct filmes{int cod, idade, qtd_midias=0, qtd_loc, cadastro;char nome[50], genre[50];float duracao, val_loc;};filmes loc[10];printf("\n Menu \n");printf("\n 1 - Cadastrar Filmes ");printf("\n 2 - Locar Filmes ");printf("\n 3 - Devolver Filmes ");printf("\n 4 - Relatório ");printf("\n 5 - Sobre ");printf("\n 6 - Sair ");scanf("%d",&menu);int qtd_cad=0;switch(menu){case 1:if(qtd_cad==10){printf("\n Atingiu o limite máximo de filmes cadastrado ");break;}do{printf("\n Digite o código do filme ");scanf("%i",&loc[qtd_cad].cod);fflush(stdin);printf("\n Digite o nome do filme ");scanf("%s",&loc[qtd_cad].nome);fflush(stdin);printf("\n Digite o gênero do filme ");scanf("%s",&loc[qtd_cad].genre);fflush(stdin);printf("\n Digite a idade permitida para acessar o filme ");scanf("%d",&loc[qtd_cad].idade);fflush(stdin);printf("\n Digite a duração do filme em minutos ");scanf("%s",&loc[qtd_cad].duracao);fflush(stdin);printf("\n Digite o valor da locação ");scanf("%f",&loc[qtd_cad].val_loc);fflush(stdin);printf("\n Digite a quantidade de midias existentes ");scanf("%d",&loc[qtd_cad].qtd_midias);fflush(stdin);printf("\n Deseja cadastrar outro filme ? Pressione s ( para sim ) ou n (para não) ");scanf("%c",&loc[qtd_cad].cadastro);fflush(stdin);if((loc[qtd_cad].cadastro!='s') && (loc[qtd_cad].cadastro!='n')){printf("\nTecla errada !! Por favor pressione a tecla novamente ");scanf("%c",&loc[qtd_cad].cadastro);fflush(stdin);qtd_cad ++;}}while(qtd_cad<10);case 2:int codigo, idad;char locar;do{printf("\n Digite o código do filme ");scanf("%d",&codigo);printf("\n Digite sua idade ");scanf("%d",&idad);if (codigo==loc[qtd_cad].cod){if(idad==loc[qtd_cad].idade){}else{printf("\n Idade não permitida !! ");}printf("\n O nome do filme é : %d",loc[0].cod);printf("\n O gênero é : %s",loc[0].genre);printf("\n O valor do filme é : %0.2f",loc[0].val_loc);printf("\n Deseja locar outro filme ? Pressione S (para sim) ou N(para não)");scanf("%c",&locar);}locar++;}while('S'==locar);}} No case 2 : Vou precisar fazer 10 vezes ? fazendo um por umprintf("\n O nome do filme é : %d",loc[0].cod);printf("\n O gênero é : %s",loc[0].genre);printf("\n O valor do filme é : %0.2f",loc[0].val_loc);printf("\n Deseja locar outro filme ? Pressione S (para sim) ou N(para não)");scanf("%c",&locar);Ex : loc[1].cod , loc[2].cod ..... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Agosto 5, 2016 Não use fflush na entrada padrão. Coloque um %*c nos scanf como segundo formatador. 1 Compartilhar este post Link para o post Compartilhar em outros sites
Wilkyn Fernandes Taborda 0 Denunciar post Postado Dezembro 5, 2019 (editado) Em 05/08/2016 at 12:09, _Isis_ disse: Não use fflush na entrada padrão. Coloque um %*c nos scanf como segundo formatador. É verdade. Ele fazendo o que você diz não precisará colocar fflush(stdin) após ler dados de entrada. Abaixo está esse programa de locadora completo e sem o uso de fflush(stdin): #include<stdio.h> struct filme{ int codigo; char nome[30]; char genero[30]; int censura; int tamanho_min; float valor_loc; int quant; int quant_locada; }; int main(){ struct filme filmes[10]; int i,quant_filmes_cad=0,op,cod_loc,cod_dev,idade; char resp; while(1){ printf("1.Cadastro"); printf("\n2.Locacao"); printf("\n3.Devolucao"); printf("\n4.Relatorio"); printf("\n5.Sobre"); printf("\n6.Sair"); scanf("%d", &op); switch(op){ case 1: do{ if(quant_filmes_cad==10){ printf("Numero maximo de filmes cadastrados atingido."); resp='n'; } else{ printf("Digite o codigo do filme:"); scanf("%d%*c",&filmes[quant_filmes_cad].codigo); //Limpando o buffer de entrada com %*c como segundo formatador printf("Digite o nome do filme:"); gets(filmes[quant_filmes_cad].nome); printf("Digite o genero do filme:"); gets(filmes[quant_filmes_cad].genero); printf("Digite a idade da censura do filme:"); scanf("%d",&filmes[quant_filmes_cad].censura); printf("Digite o tamanho em minutos do filme:"); scanf("%d",&filmes[quant_filmes_cad].tamanho_min); printf("Digite o valor de locacao:"); scanf("%f",&filmes[quant_filmes_cad].valor_loc); printf("Digite a quantidade de copias total desse filme:"); scanf("%d",&filmes[quant_filmes_cad].quant); printf("Digite a quantidade de copias locadas desse filme:"); scanf("%d",&filmes[quant_filmes_cad].quant_locada); quant_filmes_cad++; printf("Deseja cadastrar mais algum ?(s/n)"); scanf("%*c%c",&resp);//Limpando o buffer novamente usando %*c } }while((resp=='s')||(resp=='S')); break; case 2: printf("Qual o codigo do filme que deseja locar?"); scanf("%d",&cod_loc); printf("Digite a sua idade:"); scanf("%d",&idade); for(i=0;i<quant_filmes_cad;i++) if(filmes[i].codigo==cod_loc){ printf("Nome do filme: %s",filmes[i].nome); printf("Genero: %s",filmes[i].genero); printf("Idade recomendada: %d",filmes[i].censura); printf("Tamanho em minutos: %d",filmes[i].tamanho_min); printf("Valor da locacao: %f",filmes[i].valor_loc); printf("Quantidade total de copias: %d",filmes[i].quant); printf("Quantidade de copias disponiveis: %d",filmes[i].quant-filmes[i].quant_locada); printf("Deseja locar este?S/N"); scanf("%*c%c",&resp);//limpeza de buffer com %*c if((resp=='s')||(resp=='S')){ if(idade>=filmes[i].censura) if(filmes[i].quant_locada!=filmes[i].quant){ filmes[i].quant_locada++; printf("Filme locado."); } else printf("Nao ha mais copias desse filme disponiveis."); else printf("A idade para locacao nao e permitida."); } } if(i==quant_filmes_cad){ printf("Filme nao encontrado."); break; } break; case 3: printf("Qual o codigo do filme que deseja devolver?"); scanf("%d%*c",&cod_dev);//%*c pra limpar o buffer for(i=0;i<quant_filmes_cad;i++){ if(cod_dev==filmes[i].codigo){ if(filmes[i].quant_locada==0){ printf("Todas as copias desse filme ja estao devolvidas."); break; } printf("Filme devolvido."); filmes[i].quant_locada--; break; } } if(i==quant_filmes_cad){ printf("Filme nao encontrado."); break; } break; case 4: if(quant_filmes_cad==0){ printf("Nao ha filmes cadastrados."); break; } for(i=0;i<quant_filmes_cad;i++){ printf("Codigo: %d",filmes[i].codigo); printf("Nome do filme: %s",filmes[i].nome); printf("Genero: %s",filmes[i].genero); printf("Valor de locacao: %f",filmes[i].valor_loc); printf("Quantidade disponivel para locacao: %d",filmes[i].quant-filmes[i].quant_locada); } break; case 5: printf("Software de locadora - Forum iMasters."); break; case 6: exit(0); } } system("pause"); } Editado Dezembro 5, 2019 por Wilkyn Fernandes Taborda Falta de inserção de um pequeno bloco de código. Compartilhar este post Link para o post Compartilhar em outros sites