Вывод сведений по фильмам - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Такая проблема: написал программу, которая должна принимать на себя массив структур по фильмам (Название, режиссёр, страна, жанр, год), и выводить сведения по фильмам, соответствующим условиям. Почему-то при сравнении условии (внутри цикла) он не хочет выводить сведения по фильмам. Считывается нормально - вне цикла и проверки условия он выдаёт всё, как надо. В чём проблема?
//main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "func.h"
 
/*Массив структур, содержащих сведения о фильмах. Каждая структура
должна содержать следующие поля: режиссер, название, страна, жанр,
год создания. Вывести на экран сведения о фильмах определенного
жанра, созданных в некоторой стране.
*/
 
int main(void)
{
    int n;
    printf("Enter the number of films: ");
    scanf("%d", &n);
 
    struct FilmDB db[n];
    movie_input(n,db);
    movie_output(n,db);
}
 
//func.h
#ifndef FUNC_H_INCLUDED
#define FUNC_H_INCLUDED
 
struct FilmDB
{
   char director[50];
   char title[50];
   char country[20];
   char genre[20];
   int year;
};
 
void movie_input(int n,struct FilmDB db[]);
void movie_output(int n,struct FilmDB db[]);
 
#endif // FUNC_H_INCLUDED
 
//func.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "func.h"
 
void movie_input(int n,struct FilmDB db[])
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("\nNew film\n");
        printf("\nEnter the movie title: ");
        scanf("%s",db[i].title);
        printf("\nEnter the director: ");
        scanf("%s",db[i].director);
        printf("\nEnter the movie origin: ");
        scanf("%s",db[i].country);
        printf("\nEnter the movie genre: ");
        scanf("%s",db[i].genre);
        printf("\nEnter the release year: ");
        scanf("%d",&db[i].year);
    }
}
 
void movie_output(int n,struct FilmDB db[])
{
    int i;
    char gnr[20];
    char cntr[20];
    printf("\nEnter the country: ");
    scanf("%s", cntr);
    printf("\nEnter the genre: ");
    scanf("%s", gnr);
 
    printf("\nSorting results\n\n");
    printf("%s", cntr);
 
    for(i=0;i<n;i++)
    {
        if((strcmp(gnr,db[i].genre) == 0) && (strcmp(cntr,db[i].country) == 0))
        {
 
            printf("Title: %s\n",db[i].title);
            printf("Title: %s\n",db[i].director);
            printf("Title: %s\n",db[i].country);
            printf("Title: %s\n",db[i].genre);
            printf("Title: %d\n",db[i].year);
        }
    }
}

Решение задачи: «Вывод сведений по фильмам»

textual
Листинг программы
scanf("%d", &n);

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Вводится переменная типа int с именем n с помощью функции scanf.
  2. Значение этой переменной сохраняется в памяти компьютера и может быть использовано в дальнейшем для выполнения различных операций. Список действий:
  3. Ввод значения переменной n с помощью функции scanf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы