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

Написание курсача - C++

Восстановить пароль Регистрация
 
xunicorn
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 118
22.11.2011, 18:09     Написание курсача #1
Собственно вопрос(ы) не о том как написать, а исправление уже имеющихся ошибок.
Итак:

1. Программа по разному исполняеться при пристом исполнении и при прогоне через дебагер: при заполнении элементов массива класса без дебагера заполнение прекращаеться на 3 элементе, а с дебагером выполняеться на ура
2. Есть тип double и есть переключатель switch(int(10*double)). Когда ввожу число \'6.1\', то у меня через дебагер выдаеться число 6.0999..
3. Есть массив на классы, я размер задаю изначально при входе в программу. Есть функция додавания элемента в массив. То если изначально размер массива == 0, и используя функцию add - я могу добавить не больше двух элементов в массив, дальше программа "слетает"(завершаеться)


А все остальные ошибки вылазят после решения этих.

Так что кто имеет желания, напишите возможные ответы/решения на эти вопросы, милости просим
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2011, 18:09     Написание курсача
Посмотрите здесь:

написание программ на C C++
Написание функции C++
Написание криптора C++
C++ Написание программы
В техе дали тему для курсача напишите код пожалуйста ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
22.11.2011, 23:18     Написание курсача #2
Код в студию.
xunicorn
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 118
23.11.2011, 00:01  [ТС]     Написание курсача #3
Курсовая состоит из трех файлов
lib.cpp
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
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
#include<iostream>
#include<cstdio>
#include"lib.h"
using namespace std;
 
void CClient::SetName(char *n){
    name = new char[strlen(n)+1];
    strcpy(name,n);
}
 
void CClient::SetSurname(char *s){
    surname = new char[strlen(s)+1];
    strcpy(surname,s);
}
 
void CClient::SetAge(char *a){
    age = a;
}
 
void CClient::SetSex(char s){
    sex = s;
}
 
void CClient::SetMstatus(char ms){
    isMarried = ms;
}
 
void CClient::SetAdress(char *adr){
    adress = new char[strlen(adr)+1];
    strcpy(adress,adr);
}
 
void CClient::SetTel(char *t){
    tel = new char[strlen(t)+1];
    strcpy(tel,t);
}
 
void CClient::SetStatus(char s){
    status = s;
}
void CClient::SetDate(char *d){
    date = new char[strlen(d)+1];
    strcpy(date,d);
}
 
char * CClient::GetName(){
    return name;
}
 
char * CClient::GetSurname(){
    return surname;
}
 
char *CClient::GetAge(){
    return age;
}
 
char CClient::GetSex(){
    return sex;
}
 
char CClient::GetMstatus(){
    return isMarried;
}
 
char * CClient::GetAdress(){
    return adress;
}
 
char * CClient::GetTel(){
    return tel;
}
 
char CClient::GetStatus(){
    return status;
}
 
char * CClient::GetDate(){
    return date;
}
 
void CFlats::SetDistr(char *distr){
    this->distric = new char[strlen(distr) + 1];
    strcpy(this->distric, distr);
}
 
void CFlats::SetSquare(char *square){
    this->square = new char[strlen(square) + 1];
    strcpy(this->square, square);
}
 
void CFlats::SetRooms(char *rooms){
    this->rooms = new char[strlen(rooms) + 1];
    strcpy(this->rooms, rooms);
}
 
void CFlats::SetFloor(char *floor){
    this->floor = new char[strlen(floor) + 1];
    strcpy(this->floor, floor);
}
 
void CFlats::SetPrice(double price){
    this->price = price;
}
 
void CFlats::SetAdress(char *adress){
    this->adress = new char[strlen(adress) + 1];
    strcpy(this->adress, adress);
}
 
char * CFlats::GetDistr(){
    return this->distric;
}
 
char * CFlats::GetSquare(){
    return this->square;
}
 
char * CFlats::GetRooms(){
    return this->rooms;
}
 
char * CFlats::GetFloor(){
    return this->floor;
}
 
double CFlats::GetPrice(){
    return this->price;
}
char * CFlats::GetAdress(){
    return this->adress;
}
 
void mainMenu(){
    cout << endl;
    cout << "1. Fill DB\n";
    cout << "2. Print DB\n";
    cout << "3. Add to DB\n";
    cout << "4. Delete from DB\n";
}
void mainMenu_cl(){
    cout << "5. Sort DB\n";
    cout << "6. Search in DB\n";
    cout << "0. Exit\n";
}
 
void subMenu_cl(int a){
    if( a == 5 ){
        cout << "\t5.1 Sort by Surname\n";
        cout << "\t5.2 Sort by flat square\n";
    }else if( a == 6){
        cout << "\t6.1 Search client adress by Surname\n";
        cout << "\t6.2 Search client by tel\n";
    }
}
 
void mainMenu_fl(){
    cout << "5. Sample in DB\n";
    cout << "6. Calculation\n";
    cout << "7. Correction in DB\n";
    cout << "8. Table Report\n"; 
    cout << "0. Exit\n";
}
 
void subMenu_fl(int a){
    if( a == 1){
        cout << "\t5.1 Sample n-rooms flat doesn\'t in 1 floor\n";
        cout << "\t5.2 Sample by square and area of the city\n";
    }else if( a == 2 ){
        cout << "\t6.1 Average price 3-bedroom flat\n";
        cout << "\t6.2 Amount of requests\n";
    }else if( a == 3){
        cout << "\t7.1 Deleting completed applications\n";
        cout << "\t7.2 Change price a given client's apartment\n";
    }
}
 
void fillClient(CClient *p){
    char *nm = new char[16];
    char *srnm = new char[16];
    char *ag = new char[4];
    char sx = ' ';
    char isM = ' ';
    char *adrs = new char[64];
    char *tel = new char[16];
    char stat = ' ';
    char *date = new char[10];
 
    do{
        cout << "Enter name: ";
        cin >> nm;
    }while( nm == NULL);
    do{
        cout << "Enter surname: ";
        cin >> srnm;
    }while( srnm == NULL);
    cout << "Enter age: ";
    cin >> ag;
    cout << "Choose sex(male/female): ";
    cin >> sx;
    cout << "Choose marital status(married/single): ";
    cin >> isM;
    do{
        cout << "Enter Adress: ";
        cin.ignore();
        cin.getline(adrs, 64);
    }while( adrs == NULL);
    do{
        cout << "Enter telefon: ";
        cin.getline(tel, 16);
    }while( tel == NULL );
    cout << "Set agency status(exchange/buy/sell): ";
    cin >> stat;
    do{
        cout << "Enter date: ";
        cin.ignore();
        cin.getline(date, 10);
    }while(date == NULL);
 
    p->SetName(nm);
    p->SetSurname(srnm);
    p->SetAge(ag);
    p->SetSex(sx);
    p->SetMstatus(isM);
    p->SetAdress(adrs);
    p->SetTel(tel);
    p->SetStatus(stat);
    p->SetDate(date);
}
 
void fillFlat(CFlats *f){
    char *distric = new char[32];
    char *square = new char[4];
    char *rooms = new char[1];
    char *floor = new char[2];
    double price = 0;
    char *adress = new char[32];
 
    cout << "Enter distric of flat: ";
    cin.ignore();
    cin.getline(distric, 32);
    cout << "Enter adress of flat: ";
    cin.ignore();
    cin.getline(adress, 32);
    cout << "Enter square of flat(m^2): ";
    cin >> square;
    cout << "Enter number of rooms: ";
    cin >> rooms;
    cout << "Enter floor: ";
    cin >> floor;
    cout << "Enter price($): ";
    cin >> price;
    
    f->SetDistr(distric);
    f->SetSquare(square);
    f->SetRooms(rooms);
    f->SetFloor(floor);
    f->SetPrice(price);
    f->SetAdress(adress);
 
}
void printClient(CClient *p){
    cout << "Name:\t\t" << p->GetName() << endl
        << "Surname:\t" << p->GetSurname() << endl
        << "Age:\t\t" << p->GetAge() << endl
        << "Sex:\t\t" << p->GetSex() << endl
        << "Marital status(married/single):\t" << p->GetMstatus() << endl
        << "Adress:\t\t" << p->GetAdress() << endl
        << "Telefon:\t" << p->GetTel() << endl
        << "Status:\t\t" << p->GetStatus() << endl
        << "Date:\t\t" << p->GetDate() << endl;
    cout << "\n===\n";
}
 
void printFlat(CFlats *f){
    cout << "Distric:\t\t" << f->GetDistr() << endl
        << "Adress:\t\t" << f->GetAdress() << endl
        << "Square of flat:\t\t" << f->GetSquare() << endl
        << "Number of rooms:\t\t" << f->GetRooms() << endl
        << "Floor:\t\t" << f->GetFloor() << endl
        << "Price: \t\t" << f->GetPrice() << " usd" << endl;
    cout << "\n===\n";
 
}
 
 
void addClient(CClient *p, int &n){
    cout << "\nClient #" << n + 1 << " :\n";
    fillClient(( p + n ));
    n++;
}
 
void addFlat(CFlats *f, int &n){
    cout << "\nFlat #" << n + 1 << " :\n";
    fillFlat(( f + n ));
    n++;
}
 
//CClient *sortClient_srnm(CClient *p, int n){
//  CClient *tmp = new CClient[1];
//  for(int i = 0; i < n - 1; i++){
//      for(int j = 0; j < n; j++){
//          if(stricmp(( p + i )->GetSurname(), ( p + i + 1)->GetSurname()) > 0){
//              tmp = ( p + i );
//              ( p + i ) = ( p + i + 1);
//              ( p + i + 1 ) = tmp;
//          }
//      }
//  }
//  
//  delete tmp;
//
//  return p;
//}
 
//CClient *sortClient_fl(CClient *, int ){}
 
void searchClient_srnm(CClient *p, int n){
    
    char *srnm = new char[32];
    cout << "Enter surname: ";
    cin >> srnm;
 
    for(int i = 0; i < n; i++){
        if(stricmp(( p + i )->GetSurname(), srnm) == 0){
            cout << "Client #" << i << ":\n";
            printClient(p);
        }
    }
 
    delete [] srnm;
}
 
void searchClient_tel(CClient *p, int n){
    
    char *tel = new char[32];
    cout << "Enter telephone: ";
    cin >> tel;
 
    for(int i = 0; i < n; i++){
        if(stricmp(( p + i )->GetTel(), tel) == 0){
            cout << "Client #" << i << ":\n";
            printClient(p);
        }
    }
 
    delete [] tel;
}
lib.h
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
class CClient{
    private:
        char *name;
        char *surname;
        char *age;
        char sex;
        char isMarried;
        char *adress;
        char *tel;
        char status;
        char *date;
    public:
        void SetName(char *);
        void SetSurname(char *);
        void SetAge(char *);
        void SetSex(char);
        void SetMstatus(char);
        void SetAdress(char *);
        void SetTel(char *);
        void SetStatus(char);
        void SetDate(char *);
        char *GetName();
        char *GetSurname();
        char *GetAge();
        char GetSex();
        char GetMstatus();
        char *GetAdress();
        char *GetTel();
        char GetStatus();
        char * GetDate();
};
 
class CFlats{
    private:
        char *distric;
        char *square;
        char *rooms;
        char *floor;
        double price;
        char *adress;
    public:
        void SetDistr(char *);
        void SetSquare(char *);
        void SetRooms(char *);
        void SetFloor(char *);
        void SetPrice(double);
        void SetAdress(char *);
        char *GetDistr();
        char *GetSquare();
        char *GetRooms();
        char *GetFloor();
        double GetPrice();
        char *GetAdress();
};
 
void mainMenu();
void mainMenu_cl();
void mainMenu_fl();
void subMenu_cl(int);
void subMenu_fl(int);
void fillClient(CClient *);
void fillFlat(CFlats *);
void printClient(CClient *);
void printFlat(CFlats *);
void addClient(CClient *, int &);
void addFlat(CFlats *, int &);
//CClient *sortClient_srnm(CClient *, int );
//CClient *sortClient_fl(CClient *, int );
void searchClient_srnm(CClient *, int );
void searchClient_tel(CClient *, int );
main.cpp
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
#include<iostream>
#include"lib.h"
 
using namespace std;
 
int main(){
 
    float choice = 0;
    int n = 0;
 
    cout << "===\n\n" << "Choose DB:\n"
        << " 1. Clients data base" << endl
        << " 2. Flats data base" << endl
        << " 0. Exit" << endl;
    cout << ">>> ";
    cin >> choice;
 
    if( choice == 1){
 
        CClient *cl = new CClient[n];
        cout << "Enter number of clients: ";
        cin >> n;
        
        do{
            mainMenu();
            mainMenu_cl();
            cout << ">>> ";
            cin >> choice;
            if( choice > 7 )
                choice = 0;
 
            if(choice >= 5){
                subMenu_cl(choice);
                cout << ">>> ";
                cin >> choice;
            }
 
            switch(int(10*choice)){
                case 10:
                    for(int i = 0; i < n; i++){
                        cout << "\nClient #" << i + 1 << " :\n";
                        fillClient((cl + i));
                    }
                    break;
 
                case 20:
                    for(int i = 0; i < n; i++){
                        cout << "\nClient #" << i + 1 << " :\n";
                        printClient((cl + i));
                    }
                    break;
 
                case 30:
                    addClient(cl, n);
                    break;
 
                case 40:
                    n--;
                    break;
 
                case 51:
                    //cl = sortClient_srnm( cl, n );
                    break;
 
                case 52:
                    //cl = sortClient_fl( cl, n );
                    break;
 
                case 61:
                    searchClient_srnm(cl, n);
                    break;
 
                case 62:
                    searchClient_tel(cl, n);
                    break;
 
            }
        }while( choice != 0);
 
    }else if( choice == 2){
        CFlats *fl = new CFlats[n];
        cout << "Enter number of flats: ";
        cin >> n;
        
        do{
            mainMenu();
            mainMenu_fl();
            cout << ">>> ";
            cin >> choice;
            
            if( choice > 9 )
                choice = 0;
            
            if( choice > 4 ){
                subMenu_fl(choice);
                cout << ">>> ";
                cin >> choice;
            }
 
            switch(int(10*choice)){
                case 10:
                    for(int i = 0; i < n; i++){
                        cout << "\nFlat #" << i + 1 << ":\n";
                        fillFlat( fl + i );
                    }
                    break;
 
                case 20:
                    for(int i = 0; i < n; i++){
                        printFlat( fl + i );
                    }
                    break;
 
                case 30:
                    addFlat( fl, n );
                    break;
 
                case 40:
                    n--;
                    break;
 
                case 51:
                    //sample_rms( fl, n );
                    break;
 
                case 52:
                    //sample_sqr( fl, n );
                    break;
                
            }
        }while( choice !=0 );
 
 
    }
    
    
 
 
    return 0;
}
Вопросы теже.
HighPredator
 Аватар для HighPredator
5351 / 1734 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 3
23.11.2011, 00:21     Написание курсача #4
Косяки в порядке нахождения:
1)main.cpp
C++
1
2
3
4
5
int n = 0;
//...
CFlats *fl = new CFlats[n];
cout << "Enter number of flats: ";
cin >> n;
Сначала нужно считать n а уже потом выделять память.
2) непонятно зачем choice имеет тип double. Вполне может быть и целым.

Не по теме:

По ходу сборная солянка.

BoBaH26
30 / 30 / 0
Регистрация: 02.12.2010
Сообщений: 255
23.11.2011, 00:39     Написание курсача #5
Вдуть - не выдуть!!!!! Это что за программа? Оо, сколько лет обучения до такого уровня? Какой курс вообщем?
xunicorn
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 118
23.11.2011, 17:01  [ТС]     Написание курсача #6
Первый год учебы, так что прошу строго не судить

непонятно зачем choice имеет тип double. Вполне может быть и целым.
так как я потом использую подменю, то мне нужен float
co6ak
23.11.2011, 17:05
  #7

Не по теме:

с каких пор на первом курсе (даже пусть в начале второго) делают курсачи? и тем более использую классы и указатели

xunicorn
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 118
24.11.2011, 14:36  [ТС]     Написание курсача #8
с этих пор

Добавлено через 19 часов 53 минуты
Спасибо всем, разобрался. Можно закрывать тему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2011, 17:57     Написание курсача
Еще ссылки по теме:

написание программ C++
Написание формулы C++
Написание компилятора на C++ C++

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

Или воспользуйтесь поиском по форуму:
go
24.11.2011, 17:57     Написание курсача
  #9

Не по теме:

Цитата Сообщение от co6ak Посмотреть сообщение
с каких пор на первом курсе (даже пусть в начале второго) делают курсачи? и тем более использую классы и указатели
мы тоже делали курсач на первом курсе, а что не так то?!

Yandex
Объявления
24.11.2011, 17:57     Написание курсача
Ответ Создать тему
Опции темы

Текущее время: 15:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru