Определить, имеются ли в списке книги, в названии которых встречается некоторое слово - C (СИ)

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

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

Здравствуйте, помогите разобраться. Только сел за си. Написал код но он неправильно работает. Задача: В библиотеке имеется список книг. Каждая запись этого списка содержит фамилии авторов, название книг, год издания. Определить, имеются ли в данном списке книги, в названии которых встречается некоторое ключевое слово (например, "ПЭВМ"). Если имеются, то выдать на печать фамилии авторов, название и год издания всех таких книг. Вот код:
#include <stdio.h>
#include <string.h>
struct spisok   //объявление структуры
{
  char Fam [20];
  char Nazv[50];
  char God[4];            //
};
  struct spisok  mas[30];  //объявление массива структур из 30 элементов
  char Slovo[20];
  signed int i,n;
  main()
{
  int n,k=-1;
  while (k!=1)
  {
    n++;
    puts("Введите фамилию автора");
    gets(mas[n].Fam);    //считывание строки
    puts("Введите название книги");
    gets(mas[n].Nazv);
    puts("Введите год издания");  //вывод строки
    scanf("%d",mas[n].God);
    puts("0 - Продолжить ввод, 1 - Выход");
    scanf("d",k);
    printf("%s",mas[1].Fam,mas[1].Nazv,mas[1].God);
  }
  puts("Введите слово для поиска книги");
  gets(Slovo);
  clpscr();
  for (int i=0;i<=n;i++)
  {
    if (strcmp(mas[i].Nazv,Slovo)==0);
      printf("%d,%s,%s,%d\n",i,mas[i].Fam,mas[i].Nazv,mas[i].God);
      puts("Книг с таким словом в названии нет\n");
    scanf("%d",n);
  }
}
Программа пропускает ввод строки.

Решение задачи: «Определить, имеются ли в списке книги, в названии которых встречается некоторое слово»

textual
Листинг программы
if (strcmp(mas[i].Nazv,Slovo)==0)  //нет ;
      printf("%d,%s,%s,%d\n",i,mas[i].Fam,mas[i].Nazv,mas[i].God);

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

  1. В условии используется функция strcmp, которая сравнивает строки.
  2. Если строки равны (strcmp возвращает 0), то выполняется действие, указанное после if, иначе выполняется действие, указанное после else.
  3. В действии после if происходит печать индекса i, фамилии автора, названия книги и года издания книги.
  4. Если условие if не выполняется, то выводится только номер книги.

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


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

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

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