Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.12.2021
Сообщений: 17
1

Что я делаю не так в коде?

15.06.2023, 18:11. Показов 349. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я хотел чтобы при выборе посетителя можно было узнать информацию о книге только у того кто брал книгу, но почему то у всех посетителей открываются только первые 3 книги (например я выбрал посетителя номер 3 и по идее об брал только 5 и 6 книги, значит при выборе его должны показыватся только книги под номерами 5 и 6, но почему то при этих цифр появляется ошибка, а работают только 1,2 и 3 (выбрал Алексея - и книгу номер 5= ошибка, а если 1 то информация о книге появляется и так со всеми))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <string>
#include <vector>
 
struct Visitor {
    std::string name;
    std::string info;
    std::vector<std::string> books;
};
 
struct Book {
    std::string title;
    std::string author;
    std::string info;
};
 
void displayLibraryName() {
    std::cout << "Библиотека имени Маяковского" << std::endl;
}
 
void displayVisitors(const std::vector<Visitor>& visitors) {
    std::cout << "Имена посетителей:" << std::endl;
    for (size_t i = 0; i < visitors.size(); ++i) {
        std::cout << i + 1 << ". " << visitors[i].name << std::endl;
    }
}
 
void displayVisitorInfo(const Visitor& visitor) {
    std::cout << "Информация о " << visitor.name << ":" << std::endl;
    std::cout << visitor.info << std::endl;
}
 
void displayBooks(const std::vector<Book>& books) {
    std::cout << "Названия книг:" << std::endl;
    for (size_t i = 0; i < books.size(); ++i) {
        std::cout << i + 1 << ". " << books[i].title << std::endl;
    }
}
 
void displayBookInfo(const Book& book) {
    std::cout << "Полная информация о книге \"" << book.title << "\":" << std::endl;
    std::cout << "Автор: " << book.author << std::endl;
    std::cout << book.info << std::endl;
}
 
const Book* findBookByTitle(const std::vector<Book>& books, const std::string& title) {
    for (const Book& book : books) {
        if (book.title == title) {
            return &book;
        }
    }
    return nullptr;
}
 
int main() {
    std::vector<Visitor> visitors = {
        {
            "Куприн Иван В",
            "Номера книг: 1 и 2. Долгов нет. 23.03.2018 - 1984, Джордж Оруэлл, 240 руб. 03.09.2019 - Гарри Поттер и Философский камень, Джоан Роулинг, 400 руб  ",
            {"1984", "Гарри Поттер и Философский камень"}
        },
        {
            "Иванова Мария С",
            "Номера книг: 3 и 4. Долгов нет. 10.02.2020 - Война и мир, Лев Толстой, 600 руб. 12.10.2020 - Преступление и наказание, Фёдор Достоевский, 320 руб.",
            {"Война и мир", "Преступление и наказание"}
        },
        {
            "Лошков Алексей А",
            "Номера книг: 5 и 6. Долгов нет. 10.03.2020 - Заводной апельсин, Энтони Бёрджесс, 200 руб. 15.11.2021 - Тёмные начала, Филип Пулман, 300 руб. ",
            {"Заводной апельсин", "Тёмные начала"}
        }
    };
 
    std::vector<Book> books = {
        {
            "1984",
            "Джордж Оруэлл",
            "Роман, описывающий тоталитарное общество будущего."
        },
        {
            "Гарри Поттер и Философский камень",
            "Джоан Роулинг",
            "Приключения мальчика-волшебника в магическом мире."
        },
        {
            "Война и мир",
            "Лев Толстой",
            "Классический роман о событиях во время войн и мирного времени в России."
        },
        {
            "Преступление и наказание",
            "Фёдор Достоевский",
            "Роман о моральной деградации и возможности искупления."
        },
        {
            "Заводной апельсин",
            "Энтони Бёрджесс",
            "Роман о насилии и свободе в дистопическом будущем."
        },
        {
            "Тёмные начала",
            "Филип Пулман",
            "Фэнтезийный роман, рассказывающий о приключениях девочки Лиры в мире, подобном нашему."
        }
    };
 
    displayLibraryName();
 
    std::cout << "Нажмите 1, чтобы увидеть имена посетителей." << std::endl;
    int choice;
    std::cin >> choice;
 
    if (choice == 1) {
        displayVisitors(visitors);
 
        std::cout << "Выберите посетителя (введите его номер):" << std::endl;
        int visitorIndex;
        std::cin >> visitorIndex;
 
        if (visitorIndex >= 1 && visitorIndex <= visitors.size()) {
            const Visitor& selectedVisitor = visitors[visitorIndex - 1];
            displayVisitorInfo(selectedVisitor);
 
            std::cout << "Выберите книгу (введите номер):" << std::endl;
            displayBooks(books);
 
            int bookIndex;
            std::cin >> bookIndex;
 
            if (bookIndex >= 1 && bookIndex <= books.size()) {
                const std::string& selectedBookTitle = selectedVisitor.books[bookIndex - 1];
                const Book* selectedBook = findBookByTitle(books, selectedBookTitle);
                if (selectedBook != nullptr) {
                    displayBookInfo(*selectedBook);
                } else {
                    std::cout << "Книга не найдена." << std::endl;
                }
            } else {
                std::cout << "Неверный номер книги." << std::endl;
            }
        } else {
            std::cout << "Неверный номер посетителя." << std::endl;
        }
    } else {
        std::cout << "Неверный выбор." << std::endl;
    }
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2023, 18:11
Ответы с готовыми решениями:

Что делаю не так в коде?
Здравствуйте, не могу понять что делаю не так, нужно получить такой пакет: 32 00 00 74 65 73 74 6C...

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main...

Что я не так делаю со строками что не получается скомпилировать код?
пытаюсь найти окно и отправить в него сообщение std::string str1, str2; str1 = &quot;appClient...

Хотелось бы, чтоб по нажатию на кнопку что-то происходило. Но, Увы! Что я делаю не так?
Пытаюсь начать осваивать jQuery. Создал вот такой текст. (убрал лишнее) &lt;html&gt;&lt;head&gt; &lt;script&gt; ...

задача со списками,не могу понять что делаю не так в двунаправленном списке выводит не то что нужно
#include &lt;iostream&gt; using namespace std; struct spisok { double data; spisok* next; };...

1
419 / 206 / 64
Регистрация: 13.05.2020
Сообщений: 385
15.06.2023, 20:13 2
Лучший ответ Сообщение было отмечено Sosiska_v_teste как решение

Решение

Цитата Сообщение от Sosiska_v_teste Посмотреть сообщение
Что я делаю не так в коде?
У ваших visitor-ов всего по две книги, поэтому попытка получить от визитера книгу по индексам свыше 2 - неопределенное поведение или краш программы. Замените строку:
C++
1
const std::string& selectedBookTitle = selectedVisitor.books[bookIndex - 1];
на
C++
1
 const std::string& selectedBookTitle = books[bookIndex - 1].title;
1
15.06.2023, 20:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2023, 20:13
Помогаю со студенческими работами здесь

Что делаю не так...?
Set cn = Server.CreateObject('ADODB.Connection') cn.ConnectionString = dsn cn.Open Set rs...

Что я не так делаю?
Народ, подскажите, что делаю не так, не могу разделить и получить дробную часть? Unit Unit1; ...

Что я делаю не так?
Я даже на калькуляторе пересчитал там 100% всё правильно, а сайт говорит что ответ другой......

Что я делаю не так?
Васе очень нравятся натуральные числа. Но не любые числа, а такие, которые получаются произведением...

Что я делаю не так?
Доброго времени суток, уважаемые форумчане! У меня не получается написать консольное приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru