Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
ysouza

Dúvida no código

Pergunta

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.

 

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

0 respostas a esta questão

Recommended Posts

Até agora não há respostas para essa pergunta


×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.