Вывод сведений по фильмам - 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);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Вводится переменная типа int с именем
n
с помощью функции scanf. - Значение этой переменной сохраняется в памяти компьютера и может быть использовано в дальнейшем для выполнения различных операций. Список действий:
- Ввод значения переменной
n
с помощью функции scanf.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д