Ir ao conteúdo
  • Cadastre-se
Drigs

C Leitura de dados na struct

Recommended Posts

Defina uma struct Filme que armazene informações sobre um filme. A struct deve conter os seguintes campos:

 Título

 Categoria

 Ano

 Classificação

O campo “Classificação” armazena um inteiro de 1 a 5, o qual indica quanto o usuário gosta de tal filme. Considere que quanto maior for o valor do campo “Classificação”, maior é a preferência do usuário pelo filme. Após definir a struct, escreva um algoritmo que leia as informações para N structs Filme e as armazene em um vetor de struct. Em sequência, o programa deve pedir que o usuário informe um número inteiro, o qual indica um nível de classificação X. Então, o programa deve percorrer o vetor de filmes e imprimir todos os campos dos filmes que possuírem classificação maior ou igual ao nível X.  

 

//Na hora de executar, ele não me da os dados de todos filmes com classificação maior ou igual e sim apenas da ultima informação dada, se ele é maior ele me da informação, se não ele não me retorna nada e o programa termina.

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

typedef struct cinema{
    char titulo[50];
    char categoria[50];
    int ano;
    int clas;
}t_cinema;

t_cinema filme[100];

int main(){
    
    int i, x, n=1, c=0, j;
    
    while(n!=0){
        for(i=0; i<n; i++){
            strcpy(filme.titulo, "\0");
            strcpy(filme.categoria, "\0");
            filme.ano = 0000;
            filme.clas = 0;
    
            printf("\n    Sobre o Filme \n");
            printf("Nome: ");
            scanf("%s", filme.titulo);
            printf("Categoria: ");
            scanf("%s", filme.categoria);
            printf("Ano: ");
            scanf("%d", &filme.ano);
            printf("Classificacao de 1 a 5: ");
            scanf("%d", &filme.clas);
    
            c++;
        }
        printf("voce quer continuar? (1) p/ SIM  (0) p/ NAO = ");
        scanf("%d", &n);
    }
    
    printf("\nNivel de classificacao X de 1 a 5: ");
    scanf("%d", &x);
    
    for(j=0; j<c; j++){
        if(x <= filme[j].clas){
            printf("\n    Sobre o Filme: \n");
            printf("Nome: %s\n", filme[j].titulo);
            printf("Categoria: %s\n", filme[j].categoria);
            printf("Ano: %d\n", filme[j].ano);
            printf("Classificacao de 1 a 5: %d\n", filme[j].clas);
        }
    }
    
    return 0;
} 
adicionado 8 minutos depois

Resolvido, por causa que eles sempre volta a contagem pra zero no for 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1

6 horas atrás, Drigs disse:
adicionado 8 minutos depois

Resolvido, por causa que eles sempre volta a contagem pra zero no for 

  1. Fica tudo certo até que você nomeia um tipo de cinema com título de um filme em cartaz, daí nossa lógica diz ---tem algo errado! Porque os títulos de filmes em nada têm a ver como local onde são exibidos ao público. Outro assunto, o manual do bom estilo de codificação diz que nome de classe e estrutura é próprio, ou seja, começa com letra maiúscula. Por último, e para encerrar; sua estrutura ficou com dois nomes sendo um nome útil. Daí é melhor rescrever essa estrutura segundo o que determina enunciado da questão.

Lembrete: O enunciado diz que o usuário é quem define o tamanho no vetor de Filmes, ainda sim você definiu o tamanho 100 e colocou como variável global. 

 

ATUALIZAÇÃO:

{"Salvei a postagem ..." }  ( ͡° ͜ʖ ͡°)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×