Файл содержит сведения о книгах. Определить, имеется ли книга с названием "Информатика" - C (СИ)
Формулировка задачи:
Уважаемые, программисты, очень прошу помощи по данным заданиям. Нужно сделать кто какие сможет. Буду очень благодарен. Предпочитаемый язык Си/Си++.
2. Дан файл Bibl, содержащий сведения о книгах. Сведения о каждой из книг — это фамилия автора, название и год издания.
Найти названия книг данного автора, изданных начиная с 1960 г.
Определить, имеется ли книга с названием «Информатика». Если да, то напечатать фамилию автора и год издания. Если таких книг несколько, то напечатать имеющиеся сведения обо всех этих книгах.
Решение задачи: «Файл содержит сведения о книгах. Определить, имеется ли книга с названием "Информатика"»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 10
struct str
{
char name[40];
char title[40];
int year;
} kniga[MAX_BOOKS];
int main()
{
FILE *read;
int n,i,tmp=0;
char auth[40];
//read from file to struct
i=0;
read=fopen("bibl.txt","rt");
while(!feof(read))
{
fscanf(read,"%s %s %d", kniga[i].name, kniga[i].title, &kniga[i].year);
i++;
}
fclose(read);
n=i++; //book count
// end of read
printf("Enter author:");
gets(auth);
for(i=0;i<n;i++)
{
if( strcmp(kniga[i].name,auth)==0 && kniga[i].year>=1960 )
printf("%s\n",kniga[i].title);
}
for(i=0;i<n;i++)
{
if( strcmp(kniga[i].title,"Informatika")==0)
{
printf("\n%s, %s, %d",kniga[i].name,kniga[i].title,kniga[i].year);
tmp=1;
}
}
if(tmp==0)
printf("Informatika not found\n");
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C для чтения информации из файла библиотеки и поиска книги с названием Информатика. Вот список действий, которые выполняет код:
- Включаются необходимые заголовочные файлы.
- Определяется максимальное количество книг, которое может быть хранено в массиве.
- Создается структура данных для представления информации о книге.
- Открывается файл с библиотекой для чтения.
- Используется цикл while для чтения информации о каждой книге в файле.
- Данные каждой книги сохраняются в соответствующем элементе массива структур.
- Закрывается файл с библиотекой.
- Узнается общее количество книг в библиотеке.
- Пользователю предлагается ввести имя автора.
- Используется цикл for для проверки, есть ли среди книг книга с именем автора и годом издания, равным или после 1960 года.
- Если найдена книга с именем автора, выводится название этой книги.
- Используется еще один цикл for для проверки, есть ли среди книг книга с названием
Информатика. - Если найдена книга с названием
Информатика, выводятся название этой книги, имя автора и год издания. - Если книга с названием
Информатикане найдена, выводится сообщениеInformatika not found.