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

Ошибка при завершении программа. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ целое число К http://www.cyberforum.ru/cpp-beginners/thread322256.html
Дано целое число К. Вывести строку описания оценки, соответсвующей числу К(1-плохо, 2-неудовлетворительно, 3-удовлетворительно, 4-хорошо, 5-отлично). Если К не лежит в диапозоне от 1 до 5 то вывести...
C++ Создание двоичного файла Такая заморочка,нужно создать двоичный файл,вроде сделал все по правилам,но преподу не нравится,то что последовательность цифр в двоичном файле не должна отображаться в виде цифр,а должна... http://www.cyberforum.ru/cpp-beginners/thread322252.html
C++ считать с файла через ентер
Здравствуйте! Если считывать с файла вот так: freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); cin>>a>>b; то считается вот так, если число-пробел-число а если...
C++ подскажите как вывести позицию элемента
#include "stdafx.h" # include <iostream> # include <conio.h> # include <Windows.h> using namespace std; int main () { setlocale (LC_CTYPE, "Russian"); int n,k,v,m;
C++ как откинуть последнюю цифру от фисла? http://www.cyberforum.ru/cpp-beginners/thread322190.html
здравствуйте есть число: 399 995 надо получить 39 999 надо откинуть последнюю цифру...
C++ Вопрос экзамена: Подскажите свои соображения по-поводу вопросов: -Использование файлов, при создании програм.Определить для чего используються константы : GENERIC_READ и тд. тп. (ну если с консантами все ясно, то... подробнее

Показать сообщение отдельно
no0ker
101 / 88 / 4
Регистрация: 17.12.2010
Сообщений: 416
20.06.2011, 19:12
как вариант
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
#include <iostream>
#include <string.h>
#include <windows.h>
 
using namespace std;
class CBook
{
public:
        CBook (void);
        CBook (char *, char *, int);
        CBook (const CBook&);
        CBook& operator = (const CBook&);
        void clear(void);
        friend void swap (CBook&, CBook&);
        void init (char *author1, char *title1, int ID);
        void show(void);
        ~CBook(void);
private:
        int ID;
        char *author;
        char *title;
};
 
CBook::CBook(void){
        author = NULL;
        title = NULL;
        ID = 0;
}
 
CBook::CBook(char *author_, char *title_, int ID_){
        init(author_, title_, ID_);
}
 
CBook::CBook(const CBook& Other){
        init(Other.author, Other.title, Other.ID);
}
 
CBook& CBook::operator=(const CBook &Other){
        if(this!=&Other){
        CBook Tmp(Other);
        swap(*this, Tmp);
        return *this;
        //Tmp удаляется
        }
}
 
void CBook::clear(void){
        if(author!=NULL&&title!=NULL&&ID!=0)
        {
                delete[] author;
                author = NULL;
                delete[] title;
                title = NULL;
                ID = 0;
        }
}
 
void CBook::init(char *author_, char *title_, int ID_){
        ID = ID_;
        author = new char [strlen(author_)+1];
        strcpy(author, author_);
        title=new char [strlen(title_)+1];
        strcpy(title, title_);
}
 
void swap (CBook& One, CBook& Two){
        char *tmp_author, *tmp_title;
        int tmp_id;
        tmp_author = One.author;
        tmp_title = One.title;
        tmp_id = One.ID;
 
        One.author = Two.author;
        One.title = Two.title;
        One.ID = Two.ID;
 
        Two.author = tmp_author;
        Two.title = tmp_title;
        Two.ID = tmp_id;
}
 
void CBook::show(){
    if(ID!=0&&author!=NULL&&title!=NULL){
        cout<<"ID:"<<ID<<endl
            <<"Автор:"<<author<<endl
            <<"Название книги:"<<title<<endl;
    } else {
        cout<<"ID: __"<<endl
            <<"Автор: __"<<endl
            <<"Название книги: __"<<endl;
    }
}
 
CBook::~CBook(void){
        clear();
}
 
void AddBook(CBook *&book, int &size){
        CBook* temp;
        temp = new CBook [++size];
        int i;
 
        for (i=0; i<size-1; ++i){
                temp[i] = book[i];
        }
 
        delete[] book;
        book = NULL;
 
        book = new CBook[size];
 
        for (i=0; i<size-1; ++i){
              book[i] = temp[i];
        }
 
        delete[] temp;
        temp = NULL;
}
 
int main()
{
        SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
        char author[20];
        char title[20];
        int ID=0;
        int key=0;
        int size=0;
        CBook *book=NULL;
        do{
                cout<<"1.Добавить книгу"<<endl
                    <<"2.Вывести книги"<<endl
                    <<"0.Выход"<<endl;
                cin>>key;
                switch (key){
                case 1:{
                                ++ID;
                                //cin.ignore();
                                cout<<"Введите Автора:";
                                //cin.getline(author,20);
                                cin>>author;
                                cout<<"Введите название книги:";
                                //cin.getline(title,20);
                                cin>>title;
                                if (size>0)
                                        AddBook(book, size);
                                else
                                        book = new CBook[++size];
 
                                book[size-1].init(author, title, ID);
                        }
                break;
 
                case 2:{
                        for (int i=0;i<size; ++i)
                                book[i].show();
                }
                break;
 
                case 0:{
                        if(book!=NULL){
                                delete[] book;
                                book = NULL;
                        }
                        return 0;
                        }
                break;
                }
        }while(true);
}
добавил копиконструктор и перегрузку оператора равно. в общем то, доработанный вариант ТС.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru