
Сообщение от Buildog
Вообще как тебе удобно будет, можешь сразу все функции сделать шаблонами, а можешь вначале все функции реализовать, а потом под шаблоны переделать. Вот мой шаблон просто односвязного списка (только начало)
| 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
| #ifndef _TEMP_H
#define _TEMP_H
#include <iostream>
using namespace std;
template <class T>
struct ListElem
{
T item;
ListElem *next;
};
template <class T>
class List
{
public:
List();
~List();
void AddElem(T item);
void AddElem(T item, int position);
void SearchMin();
void SearchMax();
void ShowList();
void Sort();
void Swap(T& theA, T& theB);
void DelElem (int position);
private:
ListElem<T> *Head;
int SizeList;
};
template <class T>
List<T>::List()
{
Head = NULL;
SizeList = 0;
}
template <class T>
List<T>::~List()
{
while(Head)
{
ListElem<T> *temp = Head;
Head = Head->next;
delete temp;
temp = NULL;
}
SizeList = 0;
}
#endif |
|
Добавлено через 2 минуты
400+ строк кода просматривать... проверь сам работоспособность, но сразу могу сказать, что в 73 строчке твоего кода, надо ковычку добавить.
|
будем пробовать..и звать помощи..если что)
Добавлено через 10 минут
Исправил код,но ругается на :ListO;
| 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
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
| # include <string.h>
# include <iostream.h>
# include <windows.h>
class Avia
{
public:
char punkt[15], fio[50]; int namber, data[3]; Avia *Next; Avia();
Avia(char* al, char* bl, int, int*);
};
class List {
public:
Avia* First;
[COLOR="Red"]ListO;[/COLOR]
void Add(Avia *pNext); //äîáàâëåíèå â êîíåö ñïèñêà Avia* Poisk();
void ShowAll(); //ïîêàç âñåãî ñïèñêà
Avia* FindAvia(int nomer, int *datal); //ïîèñê â ñïèñêå Avia* GetPrev(Avia *p); int GetCount();
Avia * GetAt(int n); // ïîëó÷àåò ýëåìåíò ïî åãî íîìåðó bool RemoveAvia(int nomer, int *datal); //óäàëåíèå ýëåìåíòà
};
Avia::Avia()
{
memset(punkt,0,sizeof(punkt));
memset(fio,0,sizeof(fio));
Next=NULL; //îáíóëÿåì óêàçàòåëü ïîñëåäíåãî ýëåìåíòà
Avia::Avia(char* al, char* bl, int namberl, int *datal)
{
strcpy(punkt, al); strcpy(fio, b 1); namber=namberl;
for (int i=0; i<3; i++) data[i]=datal[i];
Next=NULL; //îáíóëÿåì óêàçàòåëü ïîñëåäíåãî ýëåìåíòà
}
List::List()
{
First=NULL; //îáíóëÿåì óêàçàòåëü ïåðâîãî ýëåìåíòà
}
void List::Add(Avia *pNext)
{
// Åñëè ñïèñîê íå ïóñò. if(First!=NULL)
Poisk()->Next = pNext;
else
// Åñëè ñïèñîê ïóñò, First = pNext;
}
Avia* List: :Poisk()
{
Avia *X = First;
// Åñëè ñïèñîê ïóñò if(X == NULL) return NULL;
// Ïîêà åñòü ñëåäóþùèé ýëåìåíò ñïèñêà. whi!e(X->Next!=NULL) X = X->Next;
return X;
}
void List::ShowAll()
{
// Óêàçàòåëü íà î÷åðåäíûå äàííûå â ñïèñêå. Avia * pCurr = First; // Åñëè ñïèñîê ïóñò
if(pCurr == NULL)
{
ñîèÊ<"Ñïèñîê ïóñòËï";
}
// Ïîêà åñòü ñëåäóþùèé ýëåìåíò ñïèñêà, do
// Âûâîäèì íà êîíñîëü î÷åðåäíîé ýëåìåíò. cout«pCurr->fio«"\t"«pCurr->punkt«"\t"«pCurr->namber«"\t"«pCurr- >data[0]«"."«pCurr->data[l]«"."«pCurr->data[2]«"\n";
while((pCurr = pCurr->Next)!=NULL);
Avia* List::FindAvia(int nomer, int *datal)
{
int flag=0;
// Óêàçàòåëü íà î÷åðåäíûå äàííûå â ñïèñêå. Avia * pCurr = First;
// Åñëè ñïèñîê ïóñò, òî âîçâðàùàåì NULL.
if(pCurr == NULL) {
ñîÙ«"Ñïèñêà íåò";
}
// Îáõîäèì âñå ýëåìåíòû ñïèñêà. do{
// Åñëè íàøëè èñêîìûé ýëåìåíò, òî åãî è âîçâðàùàåì.
if(pCurr->namber==nomer && pCurr->data[0]==datal [0] && pCurr->data[l]==datal[l] &&
pCurr->data[2]==data 1 [2]) {
// Âûâîäèì íà êîíñîëü
coiit<<pCurr->fio<<''\t",<<pCurr->punkt<<''\t''<<pCurr->namber<<''\t''<<pCurr- >data[0]«". "<<pCurr->data[ 1 ]«". "<<pCurr->data[2] <<"\n"; flag=l; return pCurr;
}
}while((pCurr = pCurr->Next)!=NULL);
if (flag==0) ñîÙ«"Òàêîé çàÿâêè HeT"«endl; return pCurr;
}
Avia* List::GetPrev(Avia *p)
{
// Åñëè ïðåäûäóùåãî ýëåìåíòà ñïèñêà íåò (ò. å. íàø ýëåìåíò ñîâïàäàåò ñ ïåðâûì), òî âîçâðàùåì
NULL.
if(p == First)
return NULL; // Åñëè ïðåäûäóùèé ýëåìåíò åñòü. Avia * pCurr = First; do{
if(pCurr->Next==p) { // âîçâðàùàåì î÷åðåäíîé ýëåìåíò, return pCurr;
}
// Ïåðåâîäèì pCurr íà ñëåäóþùèé ýëåìåíò â ñïèñêå. }while((pCurr = pCurr->Next)!=NULL); return NULL;
}
int List::GetCount()
{
// Óêàçàòåëü íà î÷åðåäíûå äàííûå â ñïèñêå. Avia * pCurr = First; // Åñëè ñïèñîê ïóñò
if(pCurr == NULL)
{
return 0;
int count = 1; //×èñëî ýëåìåíòîâ â ñïèñêå. // Ïîêà åñòü ñëåäóþùèé ýëåìåíò ñïèñêà.
while(pCurr->Next!=NULL)
{
// Ïåðåõîäèì íà ñëåäóþþùåãî. pCurr = pCurr->Next; // Óâåëè÷èâàåì ñ÷åò÷èê. count++;
}
return count;
Avia * List::GetAt(int n)
{
// Óêàçàòåëü íà î÷åðåäíûå äàííûå â ñïèñêå. Avia * pCurr = First;
// Åñëè ñïèñîê ïóñò èëè ýëåìåíòà ñ òàêèì íîìåðîì íåò,òî âîçâðàùàåì NULL.
if(pCurr == NULL || n>GetCount()-l)
{
return NULL;
}
// Äîáèðàåìñÿ äî ýëåìåíòà ñ íóæíûì íîìåðîì.
for(int i=0; i<GetCount(); i++) {
if(i==n) {
return pCurr;
}
pCurr = pCurr->Next;
}
return NULL;
bool List::RemoveAvia(int nomer, int *datal)
{
// Åñëè ñïèñîê ïóñò if(First == NULL)
{ ñîØ«"Ñïèñêà íåò"; return false;}
// Ïîëó÷àåì ýëåìåíò äëÿ óäàëåíèÿ. Avia* pData = FindAvia(nomer, datal); // Åñëè òàêîãî ýëåìåíòà â ñïèñêå íåò if(pData == NULL)
{ cout«"TaKoro ýëåìåíòà íåò"; return false;
}
// Åñëè óäàëÿåìûé ýëåìåíò - ïåðâûé â ñïèñêå.
if(pData == First)
{
First = pData->Next; delete pData; return true;
}
// Åñëè óäàëÿåìûé ýëåìåíò - íå ïåðâûé â ñïèñêå. GetPrev(pData)->Next = pData->Next;
delete pData;
ñîèÊ<"Ýëåìåíò óäàëåí"; return true;
main() {
List list; Avia *pData; char p[15], fio[15];
int n, namber, data[3]; bool flag=false; SetConsoleOutputCP( 1251);
while (1)
{
cout«"l Äîáàâèòü 3anBKy"«endl; cout«"2 Ïîêàçàòü âñå 3aHBKn"«endl; cout«"3 Ïîèñê 3aHBKH"«endl; cout«"4 Óäàëèòü 3aflBKy"«endl; cout«"5 Bbixofl"«endl; cout«"n="; cin»n;
switch (n) {
case 1:
{
ñîèÊ<"Ââåäèòå ïóíêò íàçíà÷åíèÿ"«å1^1; cin»p;
cout«" Â âåäèòå ÔÈÎ nacca>icnpa"«endl; cin»fio;
cout«" Â âåäèòå íîìåð pefica"«endl; cin»namber;
ñîèÊ<"Ââåäèòå äàòó âûëåòà"«åï¸1; ñîèÊ<"×èñëî: "; cin»data[0]; ñîèÊ<"Ìåñÿö: "; cin»data[l]; cout«Tcw "; cin»data[2]; cout«endl;
pData = new Avia(p, fio, namber, data);
list.Add(pData);
break;
}
case 2:
{
list.ShowAll(); break;
}
case 3:
{
ñîè1«"Ââåäèòå íîìåð peiica"«endl; cin»namber;
ñîè1«"Ââåäèòå äàòó BbuieTa"«endl; ñîèÊ<"×èñëî: "; cin»data[0]; cout«"MecHu: "; cin»data[l]; ñîèÊ<"Ãîä: "; cin»data[2];
cout«"\n";
list.FindAvia(namber, data); break;
case 4:
{
ñîè1«"Ââåäèòå íîìåð pefica"«endl; cin»namber;
ñîè1«"Ââåäèòå äàòó BbmeTa"«endl; cout«"4Hono: "; cin»data[0]; cout«"MecHu: "; cin»data[l]; ñîèÊ<"Ãîä: "; cin»data[2]; cout«"\n";
list.RemoveAvia(namber, data); break;
case 5:
return 0;
default:
cout«"TaKoro ïóíêòà ìåíþ íåò. Ïîâòîðèòå ââîä"«åï¸1;
} }
return 0;
¹16 (ïîäðàçäåë 3.2)
Îïèñàòü êëàññ «ìíîæåñòâî», ïîçâîëÿþùèé âûïîëíÿòü îñíîâíûå îïåðàöèè íàä ìíîæåñòâàìè - äîáàâëåíèå è óäàëåíèå ýëåìåíòà, îïðåäåëåíèå ÷ëåíñòâà, ïåðåñå÷åíèå, îáúåäèíåíèå, ðàçíîñòü è ñèììåòðè÷íàÿ ðàçíîñòü ìíîæåñòâ.
Ïåðåãðóçèòü îïåðàöèè: ïðèñâàèâàíèÿ ìíîæåñòâ (=), ðàâåíñòâà è íåðàâåíñòâà ìíîæåñòâ.
Íàïèñàòü ïðîãðàììó, äåìîíñòðèðóþùóþ ðàáîòó ñ ýòèì êëàññîì. Ïðîãðàììà äîëæíà ñîäåðæàòü ìåíþ, ïîçâîëÿþùåå îñóùåñòâèòü ïðîâåðêó âñåõ ìåòîäîâ êëàññà.
Ðåøåíèå
#include <iostream.h> #include <windows.h> #include <math.h> #include <conio.h>
class Set {
public:
Set();
int count; //êîëè÷åñòâî ýëåìåíòîâ â ìíîæåñòâå
int element[ 100]; //ìíîæåñòâî ýëåìåíòîâ
void set(); //çàäàíèå ýëåìåíòà ìíîæåñòâà
void get(); //âûâîä ìíîæåñòâà
void addElement(); //äîáàâèòü ýëåìåíò â ìíîæåñòâî
void delElement(); //óäàëèòü ýëåìåíò èç ìíîæåñòâà
Set operator+(Set); //îáúåäèíåíèå
Set operator-(Set); //ðàçíîñòü
Set operator*(Set); //ïåðåñå÷åíèå
Set& operator=(Set);//nepenpHCBaHBaHne
bool operator==(Set);//cpaBHeHne íà ðàâåíñòâî
bool operator<(Set);//cpaBHeiiHe íà íåðàâåíñòâî
};
Set::Set() {
count=0;
\
i
void Set::set() {
ñîèÊ<"Ââåäèòå êîëè÷åñòâî ýëåìåíòîâ ìíîæåñòâà: "; cin»count;
for(int j=0; j<count;j++) {
cout«" Â âåäèòå ýëåìåíò ìíîæåñòâà: "; cin»element[j];
}
void Set::get()
{
for (int i=0; i<count; i++) cout«element[i]«" "; cout«endl;
void Set::addElement()
{
ñîèÊ<"Ââåäèòå ýëåìåíò ìíîæåñòâà: ";
cin»element[count];
count++;
void Set::delElement() {
int n;
ñîèÊ<"Ââåäèòå íîìåð ýëåìåíòà ìíîæåñòâà äëÿ óäàëåíèÿ: "; cin»n;
for(int i=n; i<count-l; i++) element[i]=element[i+l]; count—;
Set Set::operator+(Set el)
{
Set tmp;
int ij, flag, n;
tmp.count=0;
for(i=0; i<count; i++) tmp.element[i]=element[i]; n=count;
for(i=0; i<el.count;i++)
{
flag = 0;
for(j=0; j<el.count;j++)
if (el.element[i]==tmp.element[j]) flag=l; if (flag==0) {tmp.element[n]=el.element[i]; n++;}
\
tmp.count=n; return tmp;
Set Set::operator*(Set el) {
Set tmp; int i,j, flag, n; tmp.count=0; n=0;
for(i=0; i<count;i++) {
flag = 0;
for(j=0; j<el.count;j++)
if (element[i]==el.element[j]) flag=l; if(flag==l) {tmp.element[n]=element[i]; n++;}
}
tmp.count=n; return tmp;
Set Set::operator-(Set el)
Set tmp;
int ij, flag, n;
n=0;
for(i=0; i<count;i++) {
flag = 0;
for(j=0; j<el.count;j++)
if (element[i]==el.element[j]) flag=l; if(flag==0) {tmp.element[n]=element[i]; n++;}
}
tmp.count=n;
return tmp;
}
Set& Set::operator=(Set el)
{
count=el. count;
for(int i=0; i<count;i++) element[i]=el.element[i]; return *this;
bool Set::operator==(Set el)
{
int flag;
if (el.count!=count) return false;
for(int i=0; i<count;i++)
{
flag = 0;
for(int j=0; j<el.count;j++)
if (element[i]==el.element!]]) flag=l; if (flag==0) return false;
}
return true;
bool Set::operator<(Set el)
{
if (count<=el.count) return true;
else
return false;
int main()
{
int menu; Set setl, set2;
SetConsoleOutputCP( 1251);
while (1)
{
cout«"\n\nMEHK)\n";
cout«"l. Ñôîðìèðîâàòü ìíîæåñòâî\ï"; cout«"2. Äîáàâèòü ýëåìåíò\ï"; cout«"3. Óäàëèòü ýëåìåíò\ï"; cout«"4. Ïåðåñå÷åíèå ìíîæåñòâ\ï"; cout«"5. Îáúåäèíåíèå ìíîæåñòâ\ï"; cout«"6. Ðàçíîñòü ìíîæåñòâ\ï"; cout«"7. Ïåðåïðèñâàèâàíèå ìíîæåñòâ\ï"; cout«"8. Ñðàâíåíèå íà ðàâåíñòâî ìíîæåñòâ\ï"; cout«"9. Ñðàâíåíèå íà íåðàâåíñòâî ìíîæåñòâ\ï"; cout«"10. Âûõîä\ï\ï\ï";
ñîØ«"Âûáåðèòå ïóíêò ìåíþ: ";
cin»menu;
if (menu=10) exit(O);
switch(menu)
{
case 1: {setl.set(); break;}
case 2: {set 1 .addElementQ; ñîØ«"Ðåçóëüòàò\ï"; setl .get(); break;} case 3: {setl,delElement(); ñîèÊ<"Ðåçóëüòàò\ï"; setl .get(); break;} case 4: {setl.set(); set2.set(); setl = setl*set2;
cout«"Pe3ynbTaT\n";setl.get(); break; } case 5: {setl ,set(); set2.set(); setl = setl+set2;
ñîØ«"Ðåçóëüòàò\ï";5åÈ^å1(); break; } case 6: {setl .set(); set2.set(); setl = setl-set2;
cout«"Pe3ynbTaT\n";setl.get(); break; } case 7: {setl .setQ; set2 = setl;
ñîèÊ<"Ðåçóëüòàò\ï";5å12^å1(); break; } case 8: {setl.set(); set2.set();
if (setl==set2) ñîè1«"Ìíîæåñòâà ðàâíû";
else ñîØ«"Ìíîæåñòâà íå ðàâíû"; break; } case 9: {setl .set(); set2.set();
if (setl<set2) ñîèÊ<"Ïåðâîå ìíîæåñòâî ìåíüøå âòîðîãî";
else ñîØ«"Ïåðâîå ìíîæåñòâî áîëüøå âòîðîãî"; break; } default:{cout«"TaKoro ïóíêòà ìåíþ íåò. Ïîâòîðèòå ââîä "; break;}
} }
return 0;
¹13 (ïîäðàçäåë 3.3)
Ñîçäàòü àáñòðàêòíûé áàçîâûé êëàññ Integer (öåëîå) ñ âèðòóàëüíûìè àðèô ìåòè÷åñêèìè îïåðàöèÿìè è ôóíêöèåé âûâîäà íà ýêðàí. Îïðåäåëèòü ïðîèçâîäíûå êëàññû Decimal (äåñÿòè÷íîå) è Binary (äâîè÷íîå), ðåàëèçóþùèå ñîáñòâåííûå àðèôìåòè÷åñêèå îïåðàöèè è ôóíêöèþ âûâîäà íà ýêðàí. ×èñëî ïðåäñòàâëÿåòñÿ ìàññèâîì, êàæäûé ýëåìåíò êîòîðîãî - öèôðà.
Ðåøåíèå
#include <iostream.h> #include <windows.h> #include <string.h>
class Integer {
public:
int figure[32], count;
virtual void sum(){}; //âèðò. ô. ñóììû
virtual void diff(){}; //âèðò. ô. ðàçíîñòè
virtual void pro(){}; //âèðò. ô. ïðîèçâåäåíèÿ
virtual void input(){}; //âûâîä
virtual void output(){}; //ââîä
};
//
class Decimal : Integer
{
public:
void input()
{
char decimal[32]; int j;
for(int i=0; i<32; i++) figure[i]=0; ñîè1«"Ââåäèòå äåñÿòè÷íîå ÷èñëî: "; cin»decimal; count=strlen(decimal); j=count-l;
for(i=31; i>31-count; i—)
{
figure[i]=decimal[j]-48;
void output()
{
for(int j=0; (j<32)&&(figure[j]==0); j++); for(int i=j; i<32; i++) cout«figure[i]; cout«endl;
void sum()
{
Decimal decimal2; decimal2.input(); for (int i=31; i>0; i--)
{
figure[i]+=decimal2.figure[i]; figurefi-1 ]+=figure[i]/l 0; figure[i] %=10;
}
ñî1È«"Ðåçóëüòàò"; output();
void diff()
!
Decimal decimal2; decimal2.input();
for (int i=31; i>0; i-) {
if (figure[i]>=decimal2.figure[i]) figure[i]-=decimal2.figure[i];
else
{
figure[i]=figure[i]-decimal2.figure[i]+10;
figure[i-l]-=l;
}
}
cout«" Ðåçóëüòàò";
output(); }
void pro()
{
Decimal d2; d2.input();
int i, j, S, P; //S - Ìåñòî äëÿ ôîðìèðîâàíèÿ äâóõ öèôð Ñ-Ðàçðÿä ïåðåíîñà Decimal W; //ðåçóëüòàò
if (count>d2.count) W.count=count; else W.count=d2.count; for(i=0; i<32; i++) W.figure[i]=0;
for (i=0; i<32; i++) // Ïî öèôðàì ÷èñëà d2
{
P=0; // Ñíà÷àëà ïåðåíîñà íåò
for (j = 0; j<32; j++) //Ïî öèôðàì ÷èñëà d
{
S = figure[i]* d2.figure[j]+W.figure[i+j]+P;
W.figure[i+j] = S%10; // Âðåìåííîå çíà÷åíèå î÷åðåäíîé öèôðû Ð = S/10; //Ôîðìèðîâàíèå ðàçðÿäà ïåðåíîñà
}
W.figure[j+i] = Ð; //Ñòàðøàÿ öèôðà ÷àñòè÷íîãî ïðîèçâåäåíèÿ
}
W.output();
// -—
class Binary : Integer
{
public:
void inputQ
{
char binary[32]; int j;
for(int i=0; i<32; i++) figure[i]=0; ñîè1«"Ââåäèòå äâîè÷íîå ÷èñëî: "; cin»binary; count=strlen(binary); j=count-l;
for(i=31; i>31 -count; i--)
{
if(binary[j]-48==0 || binary[j]-48==l)
{
figure[i]=binary[j]-48; j--;
}
else {
figure[i]=l; j-S
}
}
void output()
{
for(int j=0; (j<32)&&(figure[j]==0); j++); for(int i=j; i<32; i++) cout«figure[i]; cout«endl;
void sum()
{
Binary b2; b2.input();
for (int i=31; i>0; i-) {
figure[i]+=b2.figure[i]; figure[i-1 ]+=figure[i]/2; figurefi] %=2;
}
ñîèÊ<"Ðåçóëüòàò";
output(); }
void diff() {
Binary b2; b2.input();
for (int i=31; i>0; i~) {
if (figure[i]>=b2.figure[i]) figure[i]-=b2.figure[i];
else {
figure[i]=figure[i]-b2.figure[i]+2;
figure[i-l]-=l;
}
}
cout«" Ðåçóë üòàò";
output();
}
void pro()
{
Decimal d2; d2.input();
int i, j, S, P; //S - Ìåñòî äëÿ ôîðìèðîâàíèÿ äâóõ öèôð Ñ-Ðàçðÿä ïåðåíîñà Decimal W; //ðåçóëüòàò
if (count>d2.count) W.count=count; else W.count=d2.count; for(i=0; i<32; i++) W.figure[i]=0;
for (i=0; i<32; i++) // Ïî öèôðàì ÷èñëà d2
{
P=0; // Ñíà÷àëà ïåðåíîñà íåò
for (j = 0; j<32; j++) //Ïî öèôðàì ÷èñëà d {
S = figure[i]* d2.figure[j]+W.figure[i+j]+P;
W.figure[i+j] = S%10; // Âðåìåííîå çíà÷åíèå î÷åðåäíîé öèôðû
Ð = S/10; //Ôîðìèðîâàíèå ðàçðÿäà ïåðåíîñà
}
W.figure[j+i] = Ð; //Ñòàðøàÿ öèôðà ÷àñòè÷íîãî ïðîèçâåäåíèÿ
}
W.output();
}
//— -— —-
main()
f
int menu; Decimal dl; Binary bl;
SetConsoleOutputCP( 1251);
while (1)
{
ñîèÊ<"\ïÄåìîíñòðàöèÿ ðàáîòû ñ êëàññîì äåñÿòè÷íûõ ÷èñåë\ï"; cout«"l. ñëîæåíèå\ï"; cout«"2. âû÷èòàíèå\ï"; cout«"3. óìíîæåíèå\ï";
ñîè1«"\ïÄåìîíñòðàöèÿ ðàáîòû ñ êëàññîì äâîè÷íûõ ÷èñåë\ï"; cout«"4. ñëîæåíèå\ï"; cout«"5. âû÷èòàíèå\ï"; cout«"6. óìíîæåíèå\ï";
cout«"\n7. âûõîä\ï";
ñîØ«"Ñäåëàéòå âûáîð: ";
cin»menu;
if (menu==7) exit(0);
switch(menu) {
case 1: {dl.inputQ; dl.sumQ; break;}
case 2: {dl.inputQ; dl.diff(); break;}
case3: {dl.input(); dl.pro(); break:}
case4: {bl.input(); bl.sumQ; break;}
case 5: {bl.input(); bl.diffQ; break;}
case 6: {bl.input(); bl.pro(); break;}
default:{cout«"TaKoro ïóíêòà ìåíþ íåò\ï"; break;}
} }
return 0; return 0;
J^II ^ïîäðàçäåë j.-tj
Ñîçäàòü øàáëîí êëàññà äëÿ ðàáîòû ñ êîìïëåêñíûìè ÷èñëàìè, îáåñïå÷èâàþùèé âûïîëíåíèå îïåðàöèé ñëîæåíèÿ, âû÷èòàíèÿ è óìíîæåíèÿ êîìïëåêñíûõ ÷èñåë. Íàïèñàòü ïðîãðàììó, èñïîëüçóþùóþ ýòîò øàáëîí, çàäàâàÿ âåùåñòâåííóþ è ìíèìóþ ÷àñòè êàê ÷èñëàìè òèïà double, òàê è öåëûìè ÷èñëàìè.
Ðåøåíèå
#include <iostream.h> #include <windows.h> #include <math.h>
template <elass Type> class Complex
{
public:
Type Real, Image;
void add(Complex); //ôóíêöèÿ ñëîæåíèÿ void sub(Complex); //ôóíêöèÿ âû÷èòàíèÿ void mul(Complex); //ôóíêöèÿ óìíîæåíèÿ void del(Complex); //ôóíêöèÿ äåëåíèÿ void Output();
void Input();
};
//îïðåäåëåíèå ôóíêöèé äëÿ êëàññà Complex
template <class Type> void Complex<Type>::add(Complex C2)
{
Real = Real + C2.Real; Image = Image + C2.Image ; Output();
}
template <class Type> void Complex<Type>:: sub(Complex C2) {
Real=Real -C2.Real; Image=Image -C2.Image ; Output();
template <class Type> void Complex<Type>:: mul(Complex C2)
{
Real=Real *C2.Real -Image *C2.Image; Image=Real*C2.Image+Image *C2.Real; OutputQ;
template <class Type> void Complex<Type>::del(Complex C2) {
Real=(Real *C2.Real+Image *C2.Image)/(pow(C2.Real,2)+pow(C2.Image,2)); Image=(-l)*(Real *C2.Image +Image *C2.Real)/(pow(C2.Real,2)+pow(C2.Image,2)); OutputQ;
template <class Type> void Complex<Type>::Input()
{
ñîØ«"Ââåäèòå äåéñòâèòåëüíóþ ÷àñòü ÷èñëà: "; cin»Real;
ñîØ«"Ââåäèòå ìíèìóþ ÷àñòü ÷èñëà: "; cin»Image;
}
template <class Òóðå> void Complex<Type>::Output() {
cout«"Ðåçóëüòàò: "«Real«"+x*"«Image«endl; }
//îñíîâíàÿ ïðîãðàììà
main() {
int menu;
Complex<int> cintl, cint2; Complex<float> cfloatl, cfloat2; SetConsoleOutputCP( 1251);
while (1)
{
ñîèÊ<"\ïÄåìîíñòðàöèÿ ðàáîòû ñ öåëûìè ÷èñëàìè\ï";
cout«"l. ñëîæåíèå\ï";
cout«"2. âû÷èòàíèå\ï";
cout«"3. óìíîæåíèå\ï";
cout«"4. äåëåíèå\ï";
ñîèÊ<"\ïÄåìîíñòðàöèÿ ðàáîòû ñ âåùåñòâåííûìè ÷èñëàìè\ï";
cout«"5. ñëîæåíèå\ï";
cout«"6. âû÷èòàíèå\ï";
cout«"7. óìíîæåíèå\ï";
cout«"8. äåëåíèå\ï";
cout«"\n9. âûõîä\ï";
ñîèÊ<"Ñäåëàéòå âûáîð: ";
cin»menu;
if (menu==9) exit(O);
switch(menu) {
case 1: {cintl.Input(); cint2.Input(); cintl.add(cint2); break;} case 2: {cintl.Input(); cint2.Input(); cintl.sub(cint2); break;} case 3: {cintl.InputQ; cint2.Input(); cintl,mul(cint2); break;} case 4: {cintl.Input(); cint2.Input(); cintl.del(cint2); break; } case 5: {cfloatl .Input(); cfloat2.Input(); cfloatl ,add(cfloat2); break;} case 6: {cfloatl .Input(); cfloat2.Input(); cfloatl .sub(cfloat2); break;} case 7: {cfloatl .Input(); cfloat2.Input(); cfloatl ,mul(cfloat2); break;} case 8: {cfloatl .Input(); cfloat2.Input(); cfloatl ,del(cfloat2); break;} default: {ñîÙ«"Òàêîãî ïóíêòà ìåíþ íåò\ï"; break;}
} }
return 0; return 0; x |
|
Добавлено через 30 минут
я так понял...за бесплатно...400 строчек кода смотреть не будет...все самому......
Добавлено через 3 минуты
вообщем разобрался,но с другим кодом....
Добавлено через 37 минут
Люди,решил с нуля писать...точнее по наброскам:
первоя,я напишу функции все,а потом шаблоны....так будет лучше?
Добавлено через 22 часа 29 минут
И так,набросал на скорую руку так сказать...вопрос....почему не выполняется тут действие?
| C++ | 1
| ListItem*ref->first = new ListItem; |
|
--------------------------
КОД:
| 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
| # include <iostream>
#include <string>
using namespace std;
class List
{
public:
struct ListItem
{
string punkt;
int nomer;
string FIO;
int den;
int mesac;
int god;
ListItem *Next;
};
ListItem *First;
public:
List(){
First=NULL;
}
List(ListItem *a)
{
First=a;
}
ListItem* addx (ListItem *a)//добавление элемента в список из проги
{
ListItem * ref=new ListItem;
ref->den=a->den;
ref->god=a->god;
ref->mesac=a->mesac;
ref->nomer=a->nomer;
ref->punkt=a->punkt;
ref->FIO=a->FIO;
return First;
}
ListItem*addx()//добавление элемента в список из консоли
{
ListItem*ref->first = new ListItem;
//string str;
getline(cin,str);
cout<<"\nВведите Фамилию и инициалы заказчика:\n";
getline(cin,str);
ref->FIO=str;
cout<<"\nВведите пункт назначения:\n";
getline(cin,str);
ref->punkt=str;
cout<<"\nВведите номе рейса:\n";
cin>>ref->nomer;
cout<<"\nВведите дату:\n\tдень:";
cin>>ref->den;
cout<<"\n\tмесяц:";
cin>>ref->mesac;
cout<<"\n\tгод:";
cin>>ref->god;
End = ref;
return First;
}
void List::InsertFirst(ListItem *w)//вставить в начало списка
{
ListItem *a=new ListItem;
a->punkt=w->punkt;
a->nomer=w->nomer;
a->FIO=w->FIO;
a->mesac=w->mesac;
a->den=w->den;
a->god=w->god;
a->Next=First;
First=a;
}
void deleteThis (ListItem *a)//удаление определенного элемента
{
try
{
ListItem *A=new ListItem;
A=NULL;
ListItem *p=new ListItem;
ListItem *i=new ListItem;
p=First;
i=p->Next;
if((p->FIO==a->FIO)&&(p->nomer==a->nomer)&&(p->den==a->den)&&(p->mesac==a->mesac)&&(p->god==a->god))
{
First=First->Next;
delete p;
}
else
{
while (i!=NULL)
{
if((i->FIO==a->FIO)&&(i->nomer==a->nomer)&&(i->den==a->den)&&(i->mesac==a->mesac)&&(i->god==a->god))
A=p;
p=p->Next;
i=i->Next;
}
ListItem *tmp=A->Next;
if (tmp==NULL)
throw "Нет элемента, коиорый требуется удалить!\n";
A->Next=tmp->Next;
delete tmp;
}
}
catch (char*)
{cout<<"Нет элемента, который требуется удалить!\n";}
}
void PrintData(int d,int m,int g)//поиск элементов по дате
{
int c=0;
ListItem *q;
q=First;
if (q==NULL)
cout<<"Список пуст!\n";
else
while (q!=0)
{
if((q->den==d)&&(q->mesac==m)&&(q->god==g))
{
cout<<q->FIO<<endl<<q->punkt<<endl<<q->nomer<<endl<<q->den<<"."<<q->mesac<<"."<<q->god<<"\n********\n";
c++;
}
q=q->Next;
}
if(c==0)
{
cout<<"Такого элемента нет!\n";
}
}
void PrintList()//распечатка всех элементов
{
ListItem *p=First;
int n=1;
if(p==NULL)
cout<<"Лист пуст\n";
else
while(p)
{
cout<<n<<":"<<p->FIO<<endl<<p->punkt<<endl<<p->nomer<<endl<<p->den<<"."<<p->mesac<<"."<<p->god<<"\n********\n";
n++;
p=p->Next;
}
}
};
int main()
{
setlocale (LC_ALL,".1251");
List:: ListItem a={"Англия",876,"ТТТ",17,10,2010};
List::ListItem b={"Франция",123,"MMM",17,8,2009};
List:: ListItem *r,*y;
r=&a;
y=&b;
List t®;
List list1;
list1.PrintList();
list1.addx®;
list1.addx®;
list1.PrintList();
cout<<"Добавление элемента\n";
list1.addx(y);
list1.PrintList();
cout<<"Удаление элемента\n";
list1.deleteThis®;
list1.PrintList();
cout<<"Поиск элемента\n";
list1.PrintData(17,8,1990);
cout<<"**********************************\n";
t.PrintList();
list1.PrintList();
cout<<"***********NEW**********\n";
list1.addx();//добавляем в список данные сконсоли
list1.addx();
list1.PrintList();
return 0;
} |
|
Добавлено через 14 минут
помогите разобраться....мыслей нет.(
Добавлено через 29 минут

Сообщение от correcеt
Вечер добрый,с таким вопросом.
Задание:
шаблон класса "однонарпавленный линейный список". И использовать его при составлении программы, которая содержит текущую информацию о заявках на авиабилеты:
- пункт назначения,
- номер рейса,
- фамилию и инициалы пассажира,
- желаемую дату вылета.
Программа должна обеспечивать:
- хранение всех заявок в виде списка,
- добавление заявок,
- удаление заявок,
- вывод заявок по заданному номеру рейса и дате вылета,
- вывод всех заявок.
-----------------------------------------------
| 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
| # include <iostream>
#include <string>
using namespace std;
class List
{
public:
struct ListItem
{
string punkt;
int nomer;
string FIO;
int den;
int mesac;
int god;
ListItem *Next;
};
ListItem *First;
public:
List(){
First=NULL;
}
List(ListItem *a)
{
First=a;
}
ListItem* addx (ListItem *a)//добавление элемента в список из проги
{
ListItem * ref=new ListItem;
ref->den=a->den;
ref->god=a->god;
ref->mesac=a->mesac;
ref->nomer=a->nomer;
ref->punkt=a->punkt;
ref->FIO=a->FIO;
return First;
}
ListItem*addx()//добавление элемента в список из консоли
{
ListItem*ref->first=new ListItem;
//string str;
getline(cin,str);
cout<<"\nВведите Фамилию и инициалы заказчика:\n";
getline(cin,str);
ref->FIO=str;
cout<<"\nВведите пункт назначения:\n";
getline(cin,str);
ref->punkt=str;
cout<<"\nВведите номе рейса:\n";
cin>>ref->nomer;
cout<<"\nВведите дату:\n\tдень:";
cin>>ref->den;
cout<<"\n\tмесяц:";
cin>>ref->mesac;
cout<<"\n\tгод:";
cin>>ref->god;
End = ref;
return First;
}
void List::InsertFirst(ListItem *w)//вставить в начало списка
{
ListItem *a=new ListItem;
a->punkt=w->punkt;
a->nomer=w->nomer;
a->FIO=w->FIO;
a->mesac=w->mesac;
a->den=w->den;
a->god=w->god;
a->Next=First;
First=a;
}
void deleteThis (ListItem *a)//удаление определенного элемента
{
try
{
ListItem *A=new ListItem;
A=NULL;
ListItem *p=new ListItem;
ListItem *i=new ListItem;
p=First;
i=p->Next;
if((p->FIO==a->FIO)&&(p->nomer==a->nomer)&&(p->den==a->den)&&(p->mesac==a->mesac)&&(p->god==a->god))
{
First=First->Next;
delete p;
}
else
{
while (i!=NULL)
{
if((i->FIO==a->FIO)&&(i->nomer==a->nomer)&&(i->den==a->den)&&(i->mesac==a->mesac)&&(i->god==a->god))
A=p;
p=p->Next;
i=i->Next;
}
ListItem *tmp=A->Next;
if (tmp==NULL)
throw "Нет элемента, коиорый требуется удалить!\n";
A->Next=tmp->Next;
delete tmp;
}
}
catch (char*)
{cout<<"Нет элемента, который требуется удалить!\n";}
}
void PrintData(int d,int m,int g)//поиск элементов по дате
{
int c=0;
ListItem *q;
q=First;
if (q==NULL)
cout<<"Список пуст!\n";
else
while (q!=0)
{
if((q->den==d)&&(q->mesac==m)&&(q->god==g))
{
cout<<q->FIO<<endl<<q->punkt<<endl<<q->nomer<<endl<<q->den<<"."<<q->mesac<<"."<<q->god<<"\n********\n";
c++;
}
q=q->Next;
}
if(c==0)
{
cout<<"Такого элемента нет!\n";
}
}
void PrintList()//распечатка всех элементов
{
ListItem *p=First;
int n=1;
if(p==NULL)
cout<<"Лист пуст\n";
else
while(p)
{
cout<<n<<":"<<p->FIO<<endl<<p->punkt<<endl<<p->nomer<<endl<<p->den<<"."<<p->mesac<<"."<<p->god<<"\n********\n";
n++;
p=p->Next;
}
}
};
int main()
{
setlocale (LC_ALL,".1251");
List:: ListItem a={"Англия",876,"ТТТ",17,10,2010};
List::ListItem b={"Франция",123,"MMM",17,8,2009};
List:: ListItem *r,*y;
r=&a;
y=&b;
List t®;
List list1;
list1.PrintList();
list1.addx®;
list1.addx®;
list1.PrintList();
cout<<"Добавление элемента\n";
list1.addx(y);
list1.PrintList();
cout<<"Удаление элемента\n";
list1.deleteThis®;
list1.PrintList();
cout<<"Поиск элемента\n";
list1.PrintData(17,8,1990);
cout<<"**********************************\n";
t.PrintList();
list1.PrintList();
cout<<"***********NEW**********\n";
list1.addx();//добавляем в список данные сконсоли
list1.addx();
list1.PrintList();
return 0;
} |
|
Заранее,Спасибо!
|
а может надо другую функцию добавления...или эту переделать..нет мыслей ,как исправить?
0
|