Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему не виден результат функции?

Diana Ahadova Ученик (106), закрыт 1 год назад
Необходимо чтобы пользователь вводил автора книги, и после этого выводились книги автора и информация о них.Ошибка возникает в 106 строке кода
 #include 

#include

#include

using namespace std;



struct book {

char bookname[70];

char author[50];

char publisher[20];

char genre[20];



};





book EditBook(book* books);

book searchAuth(book* books);

void print_one(book exp);

void print_all(book* exp);





int main()

{

book* BOOK;

book books[10] = { {"Caroline","Neil","Bloomsbury","horror"},

{"Alice","Neil","Bloomsbury","fantasy"},

{"HarryPotter","Rowling","Bloomsbury","fantasy"},

{"MartinEden","Martin Lee","NewDay","sci-fi"},

{"SherlockHolmes","Sd","OldDay","detective"},

{"C++","FF","HTEW","horror"},

{"Python","Rer","Kwed","adventure"},

{"Harry Grotter","Ann","Bloom","fantasy"},

{"Mart","Scier","Toyota","sci-fi"},

{"Sher","Sd","OldDay","psychology"},

};

int choice;

bool isOn = true;

enum opt { exit = 0, edit = 1, showAll = 2, sortAuth = 3, sortTitle = 4 };

while (isOn) {

cout << "\n\t\t" << "WELCOME!\n";

cout << "(0)Exit (1)Edit (2)Show all books (3) Sort by author (4) Sort by title: ";

cin >> choice;

switch (choice)

{

default:

isOn = false;

break;

case edit:

EditBook(books);

break;

case showAll:

print_all(books);

break;

case sortAuth:

searchAuth(books);

break;

case sortTitle:



break;

}



}



}





void print_one(book exp)

{

cout << "BOOK INFO:\n" << "\tTitle: " << exp.bookname << "\t\t" << "\tAuthor: " << exp.author << "\t\t" << " \tPublisher: " << exp.publisher;

cout << "\t\t" << "\tGenre: " << exp.genre << endl;

}



void print_all(book* exp)

{

cout << "Name:" << "\t\t" << "Author:" << "\t\t" << "Publisher:";

cout << "\t" << "Genre:";

cout << "\n\n";

for (int i = 0; i < 10; i++)

print_one(exp[i]);

}



book EditBook(book* BOOK) {

char title[30];

char newtitle[30];

cout << "Enter search book title: \n";

cin >> title;

for (size_t i = 0; i < 10; i++)

{

if (strcmp(BOOK[i].bookname,title)==0) {

cout << "Enter new title: \n";

cin >> newtitle;

*BOOK[i].bookname = *newtitle;

return BOOK[i];

}

}

cout << "No such book title\n";

throw "";

}



book searchAuth(book* BOOK) {

char Author[30];

cout << "Enter search book author: \n";

cin >> Author;

for (size_t i = 0; i < 10; i++)

{

if (strcmp(BOOK[i].author, Author) == 0) {

return BOOK[i];

}

}

cout << "No such book title\n";

throw "";

}
Лучший ответ
Философия всего Мастер (1014) 1 год назад
Потому что.
Сергей СулимовПросветленный (49872) 1 год назад
ему глаза выбило взорвавшимся монитором, а вам смешно тут...
Остальные ответы
user49913 Просветленный (38634) 1 год назад
а почему должен быть виден?
return на 106 строке возвращает результат на 54 строку, там он никак не используется и уходит в никуда
Сергей Гений (56253) 1 год назад
Код - Франкенштейн.
 if (strcmp(BOOK[i].author, Author) == 0) {


//return BOOK[i]; - вместо этого нужно другое:
print_one (BOOK[i]);

}
Похожие вопросы