boa tarde, já tentei de vários modos e não consigo implementar um código que faça a leitura e exiba em ordem crescente os filmes por ano de lançamento. Alguém poderia dar uma luz!!
Segue o código:
#include<stdio.h>#include<stdlib.h>#include<string.h>struct data_lancamento //Struct disciplina determinada no escopo do trabalho e est· aninhada a struct aluno{int ano;};struct filme //Struct disciplina determinada no escopo do trabalho{char titulo[30];int categoria;struct data_lancamento data;};void exibe_ordemlancamento(int x,struct filme *p);void exibe_categoria(int x,struct filme *p);void cadastra_filme(struct filme *p);int main(){int opcao,i=0,x ,a;struct filme novo;while(1){
printf("--------------------------MENU--------------------------\n");
printf("1. Cadastrar Filmes\n");
printf("2. Exibir Filmes por Categorias\n");
printf("3. Exibir Filmes por Ordem crescente de Lancamento\n\n");
printf("\nEscolha uma das opcoes acima e em seguida tecle enter: ");
scanf("%d",&a);
printf("--------------------------------------------------------\n");switch(a){case1:
i++;
x=i;
cadastra_filme(&novo);break;case2:
exibe_categoria(x,&novo[0]);break;case3:
exibe_ordemlancamento(x,&novo[0]);break;default:
printf("\n--Opcao Invalida. Tente novamente--\n\n");}}}void cadastra_filme(struct filme *p){
printf("\n---CADASTRO DE FILMES---\n\n");
printf("\nDigite o Titulo do Filme: ");// Titulo do filme
scanf(" %[^\n]s",&p->titulo);
fflush(stdin);
printf("\nDigite a categoria do filme dentre as opcoes: \n");// Categoria do Filme
printf("1. Terror\n");
printf("2. Romance\n");
printf("3. Suspense\n");
printf("4. Shows\n");
printf("5. Comedia\n");
printf("6. Infantil\n");
scanf(" %d",&p->categoria);
printf("Digite o ano de lancamento:\n");// ano de lanÁamento do filme
printf("Ano: ");
scanf("%d",&p->data.ano);
printf("\n\n");}void exibe_categoria(int x,struct filme *p){int cat,i;
printf("\n---EXIBICAO---\n\n");
printf("Qual categoria deseja visualizar: \n");
printf("1. Terror\n");
printf("2. Romance\n");
printf("3. Suspense\n");
printf("4. Shows\n");
printf("5. Comedia\n");
printf("6. Infantil\n");
scanf(" %d",&cat);
printf("\nFILMES NESSA CATEGORIA:\n\n");for(i=0;i<x;i++){
p++;if(cat==p->categoria)// Compara a categoria que o usuario quer ver com a categoria de cada filme ja cadastrado{
printf("\nTitulo do Filme: %s \n", p->titulo);
printf("Categoria: %d \n", p->categoria);
printf("Ano de lancamento: %d\n\n", p->data.ano);}}}void exibe_ordemlancamento(int x,struct filme *p){struct data_lancamento;int year[100];int n, c, d, swap;for(c=0;c < x; c++)
scanf("%d",&year[c]);for(c =0; c <( x -1); c++){for(d =0; d < x - c -1; d++){for(year[d]> year[d+1])/* For decreasing order use < */{
swap = year[d]; year[d]= year[d+1]; year[d+1]= swap;}}}
printf("Sorted list in ascending order:\n");for( c =0; c < n ; c++)
printf("%d\n", year[c]);}
boa tarde, já tentei de vários modos e não consigo implementar um código que faça a leitura e exiba em ordem crescente os filmes por ano de lançamento. Alguém poderia dar uma luz!!
Segue o código:
Obrigado.
Compartilhar este post
Link para o post
Compartilhar em outros sites