Форум программистов, компьютерный форум 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
Здравствуйте! Пишу программу, которая создает двумерный динамический массив, находит максимальный элемент и его индексы. Максимальный элемент нашла, а вот с индексами траблы.. не находит! Помогите, пожалуйста, найти ошибку! #include <iostream> using namespace std; int main () { const int size = 3; int **matrix = new int* ; int i,j, max,col_max, row_max;
C++ Создание проверки на ввод нуля и отрицательных чисел Написал практически первую свою программу, благо ваш форум + википедия мне в помощь не могу разобраться, как вставить в неё условие чтобы была проверка на 0 и на отрицательные числа так, чтобы если хоть в одном из R было такое число, то вылезало сообщение типа "ха-ха, нуб, учи математику, на 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);
}
 
Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru