Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Динамический массив структур - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Динамический массив структур http://www.cyberforum.ru/cpp-beginners/thread651192.html
Нужно создать базу данных библиотеки состоящую из структур: книга, автор, количество читателей взявших эту книгу. Реализовать функции: ввода, вывода, добавления, удаления из динамического массива...
C++ Простая задача Помогите пожалуйста решить. Имеется в наличии 3 арбуза. Найти самый тяжелый. Примечание: решить задачу, используя язык программирования C++, среду разработки Visual Studio. При разработке... http://www.cyberforum.ru/cpp-beginners/thread651178.html
C++ Вычислить значение выражения
6. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины и длина отрезка L в этих единицах (вещественное число)....
C++ исследование volatile
Здравствуйте. В университете дали задание: "Исследование квалификаторов volatile и инструкции барьера памяти LOCK в VS для разного числа ядер". Частично по данной теме нагуглил описания....
C++ Создать двумерный динамический массив, найти максимальный элемент и его индексы http://www.cyberforum.ru/cpp-beginners/thread651164.html
Здравствуйте! Пишу программу, которая создает двумерный динамический массив, находит максимальный элемент и его индексы. Максимальный элемент нашла, а вот с индексами траблы.. не находит! Помогите,...
C++ Создание проверки на ввод нуля и отрицательных чисел Написал практически первую свою программу, благо ваш форум + википедия мне в помощь не могу разобраться, как вставить в неё условие чтобы была проверка на 0 и на отрицательные числа так, чтобы если... подробнее

Показать сообщение отдельно
miron_arhimedov
0 / 0 / 0
Регистрация: 31.10.2011
Сообщений: 5
13.09.2012, 09:04
В качестве динамического массива хорошо подойдёт SLT контейнер vector.
Чтоб долго не распространятся на тему того что это и как в коде ниже показано как приблизительно всё должно выглядеть. Но предуперждаю, что не всех жуков в коде выловил Ну и по возможности замените массивы символов строками, а то как то некрасивенько
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
#include <iostream>
#include <iomanip>
#include <cstring>
#include <vector>
using namespace std;
 
struct writer {
    char name[100];
    int d,m,y;
};
 
struct reader {
    char name[100];
    int kol;
};
 
const int SIZE = 100;
/*struct book {
    char name[100];
    char genre[100];
    writer a;
    reader b;
    int number_of_pages;
} BD[SIZE];*/
struct book {
    char name[100];
    char genre[100];
    writer a;
    reader b;
    int number_of_pages;
};
 
book shtuke;
vector < book > BD;
vector < book >::iterator It;
 
int menu();
void enter();
void show();
void add();
void delet();
void input(int);
 
int main()
{
    char choise;
 
    for(;;) {
        choise = menu();
        switch(choise) {
            case 'e': enter(); break;
            case 's': show(); break;
            case 'a': add(); break;
            case 'd': delet(); break;
            case 'q': return 0;
        }
    }
}
 
int menu()
{
    char ch;
    cout << '\n';
    do {
        cout << "(E)nter\n";
        cout << "(S)how\n";
        cout << "(A)dd\n";
        cout << "(D)elete\n";
        cout << "(Q)uit\n";
        cout << "select: ";
        cin.clear();
        cin >> ch;
    } while(!strchr("esadq", tolower(ch)));
    return tolower(ch);
}
 
void enter()
{
    int i;
    for(i=0;i<SIZE; i++)
        if(!*BD[i].name) break;
    if(i==SIZE) {
        cout << "list is full.\n";
        return;
    }
    input(i);
}
 
void input(int i)
{
    int j,k = 0;
    cout << "book title: ";
    cin >> BD[i].name;
    cout << "genre of the book: ";
    cin >> BD[i].genre;
    cout << "the name of the author: ";
    cin >> BD[i].a.name;
    cout << "type the date author's birthday in the format dd.mm.yyyy: ";
    cin>>setw(2)>>BD[i].a.d; //дата
    cin.ignore();    //точка
    cin>>setw(2)>>BD[i].a.m; //месяц
    cin.ignore();    //точка
    cin>>setw(4)>>BD[i].a.y; //год
    cout<<"\n\n"<<BD[i].a.d<<'\t'<<BD[i].a.m<<'\t'<<BD[i].a.y;
    cout << "the number of readers who took the book: ";
    cin >> k;
    BD[i].b.kol = k;
    if(k!=0){
        for(j=0;j<k;j++){
            cout << "the name of reader: ";
            cin >> BD[i].b.name;
        }
    }
}
 
void show()
{
    int t=0;
//    for(t=0;t<SIZE;t++){
    for(It=BD.begin();It!=BD.end();It++){
        cout<<"book number: "<<t<<endl;
        //if(*BD[t].name){
            cout << "book title: ";
//            cout << BD[t].name << '\n';
            cout << It->name << '\n';
            cout << "\ngenre of the book: ";
//            cout << BD[t].genre;
            cout << It->genre;
            cout << "\n\nthe name of the author: ";
//            cout << BD[t].a.name;
            cout << It->a.name;
            cout << "\n\nthe date of author's birthday: ";
//            cout <<BD[t].a.d<<'\t'<<BD[t].a.m<<'\t'<<BD[t].a.y;
            cout <<It->a.d<<'\t'<<It->a.m<<'\t'<<It->a.y;
            cout << "\n\nthe number of readers who took the book: ";
//            cout << BD[t].b.kol;
            cout << It->b.kol;
        //}
        t++;
    }
}
 
void add(){
    int sz;
    BD.push_back(shtuke);
    sz = BD.size();
    cout<<"add book number "<<sz-1<<endl;
    input(sz-1);
}
 
void delet(){
    int pos;
    cout<<"book number to delete:";cin>>pos;
    BD.erase(BD.begin()+pos);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru