Поиск в структуре, которая содержит информацию о книгах в библиотеке - C (СИ)
Формулировка задачи:
Дан массив структур. Каждая структура содержит информацию о книгах в библиотеке (придумать 5 полей структуры). Создать свои пользовательские функции. Первая из них осуществляет поиск информации по введенному запросу. Вторая - выводит результат на экран. Реализовать, используя указатели на массив структур.
Решение задачи: «Поиск в структуре, которая содержит информацию о книгах в библиотеке»
textual
Листинг программы
#include "conio.h" #include "stdio.h" #include "iostream" #include <string.h> using namespace std; struct book // Объявление структуры { char *name; char *name_autor; char *izdatelstvo; int god_vypuska; int stranicy; } books[] = { // Заполнение структуры данными {"Demons","Svetlana Golshanskay","ACT",2011,257}, {"Eva","Kris Karter","ACT",1999,400}, {"Pilot","Aleksandr Zorich","ACT",2011,200}, {"Pepelnye","Aleksandr Kontorovich","Samizdat",2011,110}, {"Ohotnik","Anton Demchenko","Samizdat",2011,614} }; const int count = 5; book *search(char *fname) /* Метод поиска по названию книги. В качестве параметра передается указатель на название книги. Возвращается: указатель на нужное поле в случае если книга найдена, и NULL если не найдена*/ { for (int i = 0; i < count; i++) { if (strcmp(fname, books[i].name) == 0) /* Метод strcmp сравнивает между собой две строки. В качестве аргументов поступают два указателя на начало двух строк и начинается посимвольное сравнивание слева-направо*/ { return &books[i]; // Возвращаем адрес нашего поля } } return NULL; // Книга не найдена, возвращаем NULL } void writeinfo(book *key) /* Метод для вывода информации по данной книги. В качестве параметра передается ссылка на нужное поле*/ { if (key == NULL) { printf("Book is not found\n"); return; } printf("Book info:\n"); printf("Nazvanie: %s\n",(*key).name); printf("Avtor: %s\n",(*key).name_autor); printf("Izdatelstvo: %s\n",(*key).izdatelstvo); char buffer [33]; _itoa_s ((*key).god_vypuska,buffer,sizeof(buffer),10); // Конвертируем int в char. получаем указатель на первый символ в buffer. printf("God: %s\n",buffer); _itoa_s ((*key).stranicy,buffer,sizeof(buffer),10); printf("Stranic: %s\n",buffer); } int main() { char fname[64]; printf("Poisk po nazvaniu knigi\nVvedite nazvanie...\n"); scanf_s("%s", fname,64); book *key = search(fname); // вызываем метод search writeinfo(key); // вызываем метод writeinfo _getch(); }
Объяснение кода листинга программы
- struct book - структура, которая содержит информацию о книгах в библиотеке.
- books[] - массив структур типа book, заполненный данными о книгах.
- const int count = 5 - количество книг в библиотеке.
- book search(char fname) - метод поиска книги по её названию. Возвращает указатель на найденную книгу или NULL, если книга не найдена.
- *void writeinfo(book key)** - метод вывода информации о книге. Если книга не найдена, выводит сообщение об этом.
- int main() - точка входа в программу. Считывает название книги с помощью функции scanf_s, вызывает метод search для поиска книги, а затем метод writeinfo для вывода информации о найденной книге.
- _getch() - блокирует программу до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д