Dúvida no código
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)
{
case 1:
i++;
x=i;
cadastra_filme(&novo);
break;
case 2:
exibe_categoria(x,&novo[0]);
break;
case 3:
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]);
}
* *
*Obrigado. *
* *
* *
* *
* *
* *
* *
* *
* *
* *Discussão (0)
Carregando comentários...