1 / 1 / 0
Регистрация: 10.03.2017
Сообщений: 10
1

Массив структур "Библиотека" (дополнить программу)

21.04.2017, 16:53. Показов 10197. Ответов 2
Метки нет (Все метки)

Дана задача.
Разработайте программу "Библиотека".Создайте структуру "Книга"(название, автор,издательство, жанр). Создайте массив из десяти книг. Реализуйте следующие возможности:
Редактировать книгу
Печать всех книг
Поиск по автору
Поиск по названию книг
Сортировка по названию
Сортировка по автору
Сортировка по издательству.
Господа знатоки, не почтите за труд научите несчастного , как теперь в функции, например Edit, можно манипулировать данными,менять автора, назв книги и удалять и добавлять книги и т.д.
Мои мучения ниже.
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include <iostream>
#include <iomanip>
#include <string.h>
 
using namespace std;
 
 typedef struct 
{
    char name[20];
    char author[20];
    char publisher[20];
    char genre[20];
}BOOK ;
 
 void print_one(BOOK p)
 {
    cout<< p.name <<"\t\t"<< p.author <<"\t\t"<<p.publisher;
    cout<<"\t\t"<< p.genre <<endl;
 }
 
 void print_all(BOOK*p,int k)
 {
    cout<<"Name:"<<"\t\t"<<"Author:"<<"\t\t"<<"Publisher:";
    cout<<"\t"<<"Genre:";
    cout<<"\n\n";
    for(int i=0;i<k;i++)
    print_one(p[i]);
 }
 void searth_book(BOOK*p,int k)
 {
    char*str=new char[255];
            
    cout<<"Enter author to found: ";
                strlwr(gets(str));
    for(int i=0;i<k;i++) 
            if(!strcmp(str,p[i].author))
        print_one(p[i]);
        
        
    delete[] str;
 }
 void searth_book2(BOOK*p,int k)
 {
    char*str2=new char[50];
int i;
    cout<<"Enter name book to found: ";
     strlwr(gets(str2));
        for( i=0;i<k;i++)                   
        if(!strcmp(str2,p[i].name))
        print_one(p[i]);
    delete []str2;          
 }
 
 void sort_book(BOOK*p,int k)
 {
    int d;
    do
    {
        d=0;
        for(int i=0;i<k-1;i++)
        if(strcmp(p[i].name,p[i+1].name)>0)
        {
         
            swap(p[i],p[i+1]);
            d=1;
        }
     }while(d);
     
 }
 void sort_book2(BOOK*p,int k)
 {
    int d;
    do
    {
        d=0;
        for(int i=0;i<k-1;i++)
        if(strcmp(p[i].author,p[i+1].author)>0)
        {
            swap(p[i],p[i+1]);
            d=1;
         }
     } while(d);
 }
 
 void sort_book3(BOOK*p,int k)
 {
    int d;
    do
    {
        d=0;
        for(int i=0;i<k-1;i++)
        if(strcmp(p[i].publisher,p[i+1].publisher)>0)
        {
            swap(p[i],p[i+1]);
            d=1;
         }
     } while(d);
 }
 
 void editing(BOOK*p,int k) 
 {
    int i;
    char*str3=new char[50];
     cout<<"Enter name books for swap: ";
     gets(str3);
     char*str4 =new char[30];
     cout<<"Enter new name the books: ";
     gets(str4);     
     for( i=0;i<k;i++);
     {
     
         if(strcmp(p[i].name,str3)==0)
         strcpy(p[i].name,str4);
         
    }
        
    
 }
int main()
{
    cout<<"\n\t\t"<<"***My library***\n\n";
const int k=10;
 
 
BOOK books[k];
strcpy(books[0].name,"c++");
strcpy(books[0].author,"pushkin");
strcpy(books[0].publisher,"google");
strcpy(books[0].genre,"akshion");
strcpy(books[1].name,"c#");
strcpy(books[1].author,"lozkin");
strcpy(books[1].publisher,"yshoo");
strcpy(books[1].genre,"triller");
strcpy(books[2].name,"gava");
strcpy(books[2].author,"ekkel");
strcpy(books[2].publisher,"kook");
strcpy(books[2].genre,"programm");
strcpy(books[3].name,"horse");
strcpy(books[3].author,"ershov");
strcpy(books[3].publisher,"pegas");
strcpy(books[3].genre,"tale");
strcpy(books[4].name,"man");
strcpy(books[4].author,"makall");
strcpy(books[4].publisher,"aish");
strcpy(books[4].genre,"fable");
strcpy(books[5].name,"eneida");
strcpy(books[5].author,"gomer");
strcpy(books[5].publisher,"piter");
strcpy(books[5].genre,"story");
strcpy(books[6].name,"loop");
strcpy(books[6].author,"zolia");
strcpy(books[6].publisher,"paris");
strcpy(books[6].genre,"tragedy");
strcpy(books[7].name,"termin");
strcpy(books[7].author,"olia");
strcpy(books[7].publisher,"paris");
strcpy(books[7].genre,"tragedy");
strcpy(books[8].name,"bremia");
strcpy(books[8].author,"lermont");
strcpy(books[8].publisher,"moskva");
strcpy(books[8].genre,"poetry");
strcpy(books[9].name,"kaval");
strcpy(books[9].author,"furman");
strcpy(books[9].publisher,"goold");
strcpy(books[9].genre,"comedy");
print_all(books,k);
//cout<<"\nSearth books by author\n";
//searth_book(books,k);
//cout<<"\nSearth books by name\n";
//searth_book2(books,k);
cout<<"\nAfter edit:\n";
editing(books, k);
print_all(books,k);
 
 
 
for(;;)
{
 
int choice;
bool fQuit=false;
 
cout<<"\n\t\t"<<"***What you need to do?***\n";
cout<<"(1)Exit (2)Sort by name (3)Sort by author (4) Sort by publisher:";
cin>>choice;
switch(choice)
{
    default:fQuit=true;break;
    case 2:sort_book(books, k);
            print_all(books,k);break;
    case 3: sort_book2(books, k);
            print_all(books,k); break;
    case 4:sort_book3(books, k);
            print_all(books,k); break;
    
                
}
if(fQuit==true)
    break;
 
}
 
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2017, 16:53
Ответы с готовыми решениями:

Написать функцию поиска человека по полю "фамилия" в массиве структур "Note" ("Персональная информация")
Вывести из структуры информацию о человеке, чья фамилия введена с клавиатуры #include...

В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию
в массиве структур студент с полями &quot;ИМЯ&quot; &quot;ВОЗРАСТ&quot; &quot;УСПЕВАЕМОСТЬ&quot; выполнить сортировку по...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

Создать массив структур "Ведомость про участников конкурса"
здравствуйте. Прошу написать программу. Большое спасибо за ваш труд. Условие: Создать массив...

2
5224 / 3196 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
21.04.2017, 17:07 2
deleted
0
295 / 124 / 106
Регистрация: 30.10.2015
Сообщений: 690
21.04.2017, 21:31 3
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
 
struct Book
{
  std::string name, author, publisher, genre;
};
 
void PrintByIndex(const std::vector<Book> &b, const size_t index);
 
int main()
{
  const unsigned int NumberOfElements = 10;
  const std::string items[] = { 
    "1) Edit.",
    "2) Print all.",
    "3) Find by author.",
    "4) Find by name.",
    "5) Sort by name.",
    "6) Sort by author.",
    "7) Sort by publisher.",
  };
 
  unsigned int key, book_number;
  std::string author, name;
 
  std::vector<Book> books(NumberOfElements);
 
  for (auto &value : books) {
    std::cout << "Name, author, publisher, genre: ";
    std::cin >> value.name >> value.author >> value.publisher >> value.genre;
  }
 
 
  while (true) {
    for (const auto &value : items)
      std::cout << value << std::endl;
 
    std::cout << ">> ";
    std::cin >> key;
 
    switch (key) {
      case 1: 
        std::cout << "Book number: ";
        std::cin >> book_number;
        std::cout << "New name, author, publisher, genre: ";
        std::cin >> books[book_number].name      >> books[book_number].author 
                    >> books[book_number].publisher >> books[book_number].genre;
        break;
      case 2:
        for (size_t i = 0; i < NumberOfElements; ++i)
          PrintByIndex(books, i);
        break;
      case 3:
        std::cout << "Author: ";
        std::cin >> author;
        for (size_t i = 0; i < NumberOfElements; ++i)
          if (books[i].author == author)
            PrintByIndex(books, i);
        break;
      case 4:
        std::cout << "Name: ";
        std::cin >> name;
        for (size_t i = 0; i < NumberOfElements; ++i)
          if (books[i].name == name)
            PrintByIndex(books, i);
        break;
      case 5:
        std::sort(books.begin(), books.end(), [](const Book &b1, const Book &b2) { return b1.name < b2.name; });
        break;
      case 6:
        std::sort(books.begin(), books.end(), [](const Book &b1, const Book &b2) { return b1.author < b2.author; });
        break;
      case 7:
        std::sort(books.begin(), books.end(), [](const Book &b1, const Book &b2) { return b1.publisher < b2.publisher; });
        break;
 
      default:
        break;
    }
  }
}
 
void PrintByIndex(const std::vector<Book> &b, const size_t index)
{
  std::cout << "[" << index << "] "  
            << b[index].name      << " " << b[index].author << " " 
            << b[index].publisher << " " << b[index].genre << std::endl;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2017, 21:31
Помогаю со студенческими работами здесь

Отсортировать массив структур типа "Znak" по заданному полю
Вот что есть, помогите дальше... Я Ввожу знак зодиака и у меня должно сортировать в том порядке в...

Отсортировать массив структур "Студент" в порядке возрастания годов рождения
Написать программу, которая вводит с клавиатуры данные, содержащие информацию: фамилия студента,...

Массив структур "Абитуриент", определить количество абитуриентов из каждого города
Структура элемента массива поступающих в вуз: фамилия, имя, отчество, домашний адрес (город, улица,...

Создать массив структур "авто" и использовать для учета работы автомагазина
Помогите написась программу Описать структуру авто, содержащую информацию об автомобиле: марка,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru