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

не работает в dev-cpp - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Простейшие структуры. Нужно написать программы http://www.cyberforum.ru/cpp-beginners/thread586780.html
1.Распечатать в порядке убывания все делители введенного натурального числа. 2. Определить число, полученное выписыванием в обратном порядке цифр введенного трехзначного числа. И еще 3 задачки в вложениях. Буду очень признателен за решения. Язык С++
C++ Постые структуры. Нужно написать программы Кто знает решения? А то у меня ахинея какая-то. 1. Определить k-ю цифру последовательности 182764125216343... , в которой выписаны подряд кубы натуральных чисел. 2.. В кассе имеются только трех- и пятирублевые купюры (это было в далёком 1980 г.). Составить программу, которая "выплачивала" бы такими купюрами любую сумму более 7 рублей. 3.Дан массив Х(215). Найти среди его элементов два... http://www.cyberforum.ru/cpp-beginners/thread586766.html
C++ Представление в памяти массивов и матриц
Для разряженной матрицы целых чисел создать модуль доступа к ней: -все нулевые элементы размещены на главной диагонали и в верхней половине участка выше диагонали. -все элементы четных столбцов-нулевые.
Сумма ряда C++
Вычислить сумму ряда с заданной точностью. помогите пожалуйста!
C++ Ребята кто шарит подведения в степень не использовать http://www.cyberforum.ru/cpp-beginners/thread586757.html
Найти сумму a^2+a^3+a^4+...a^n. Операцию подведения в степень не использовать.
C++ Перегрузка операции Всем привет! Помогите сделать пожалуйста задание, а то совсем я не понимаю его :-| Перегрузите операции суммы, скалярного произведения, модуля. подробнее

Показать сообщение отдельно
blackbanny
128 / 115 / 2
Регистрация: 14.11.2010
Сообщений: 707
25.05.2012, 19:39     не работает в dev-cpp
проект в MS Visual Studio 2008 работает нормально, а в dev-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
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
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
#ifndef _List_
#define _List_
#define nullptr 0
#include <string>
#include <iostream>
#include "table.h"
using namespace std;
 
 
template <class Data> 
class List // шаблон линейной структуры данных - двусвязного списка
{
protected:
    int  _size;  // размер списка (количество элементов)
    class Node // элемент списка
    {
    public:
        Node* _next; // указатель на преемника
        Node* _prev; // указатель на предшевственника
        Data _data; // данные 
        Node(); // конструктор без параметров
        Node(Data user_Data); // конструктор с параметром - данные
        bool operator<(const Data _dat)const;   //оператор сравнения данных
    };
public:
    Node* _first; // указатель на первый элемент списка
    Node* _last;  // указатель на последний элемент списка 
    int  GetSize() const; // опрос размера списка
    void Clear(); // очистка списка
    bool IsEmpty() const; // проверка списка на пустоту
    bool IsExist(Data user_Data) const; // опрос наличия заданного значения
    Data GetData(int user_LogNumber) const; // чтение значения с заданным номером в списке
    bool SetData(int user_LogNumber, Data user_Data); // изменение значения с заданным номером в списке.
    int  GetPosition(Data user_Data) const; // получение позиции в списке с заданным значением
    void Add(Data user_Data); // включение нового значения
    bool AddAs(Data user_Data, int user_LogNumber); // включение нового значения в позицию с заданным номером
    bool Delete(Data user_Data); // удаление заданного значения из списка
    bool DeleteAs(int user_LogNumber); // удаление значения из позиции с заданным номером
    void Sort(List<Data> *items,int left,int right);
    class Iterator // итератор (для доступа к значениям в списке с основными операциями)
    {
    public:
        List<Data>* _List; // указатель на объект коллекции
        Node* _node; // указатель на элемент коллекции  
        int _position; // логический номер элемента, на который указывает итератор 
    
        Iterator(); // конструктор по умолчанию
        Iterator(List<Data>* user_List); // конструктор по коллекции
        const List<Data>* GetList() const; /* возвращает указатель на коллекцию, к которой привязан итератор */
        void SetList(List<Data>* user_List); /* привязывает итератор к коллекции через указатель */
        int GetPosition() const; /* возвращает позицию итератора */
        bool GoToFirst(); /* установка на первый элемент списка */
        bool GoToLast(); /* установка на последний элемент списка */
        bool GoToNext(); /* переход к следующему значению в списке */
        bool GoToPrev(); /* переход к предыдущему значению */
        bool Show(); /* Выводит на консоль текущий элемент коллекции */
        bool ShowForward(); /* выводит на консоль все элементы коллекции */
        bool ShowBack(); /* выводит на консоль все элементы коллекции */
        Data& operator[](int index);// оператор взятия индекса
        Data& operator*(); //доступ к данным текущего элемента
        bool operator==(const Iterator&) const; //оператор сравнения итераторов 
    };
 
    List(); // конструктор: без параметров
    List(List<Data>& user_List); // конструктор копирования
};
/* --- --- --- --- --- NODE --- --- --- --- --- */
 
template <class Data>
List<Data>::Node::Node()
{
    this->_data = nullptr;
    this->_next = nullptr;
    this->_prev = nullptr;
}
 
template <class Data>
List<Data>::Node::Node(Data user_Data)
{
    this->_data = user_Data; 
    this->_next = nullptr;
    this->_prev = nullptr;
}
/* --- --- --- --- --- КЛАСС 'ИТЕРАТОР' --- --- --- --- --- */
 
/* -- -- -- КОНСТРУКТОРЫ КЛАССА 'ИТЕРАТОР'-- -- -- */
 
template <class Data>
List<Data>::Iterator::Iterator()
{
    _List = nullptr;
    _node = nullptr;    
    _position = -1;
}
 
template <class Data>
List<Data>::Iterator::Iterator(List<Data>* user_List)
{
    _List = user_List;
    _node = nullptr;    
    _position = -1;
}
 
/* -- -- -- МЕТОДЫ КЛАССА 'ИТЕРАТОР' -- -- -- */
 
template <class Data>
const List<Data>* List<Data>::Iterator::GetList() const
{
    return _List;
}
 
template <class Data>
void List<Data>::Iterator::SetList(List<Data>* user_List)
{
    _List = user_List;
}
 
template <class Data>
int List<Data>::Iterator::GetPosition() const
{
    return _position;
}
 
template <class Data>
bool List<Data>::Iterator::GoToFirst()
{
    if(GetList())
    {
        if(_List->IsEmpty()) 
        {
            _node = nullptr;
            return false;
        }
        else
        {
            _node = _List->_first;
            _position = 0;
            return true;
        }
    }
    else return false;
}
 
template <class Data>
bool List<Data>::Iterator::GoToLast()
{
    if(GetList())
    {
        if(_List->IsEmpty()) 
        {
            _node = nullptr;
            return false;
        }
        else
        {
            _node = _List->_last;
            _position = _List->GetSize() - 1;
            return true;
        }
    }
    else return false;
}
 
template <class Data>
bool List<Data>::Iterator::GoToNext()
{
    if(GetList())
    {
        if(_position < 0) return false;
        else
        {
            _node = _node->_next;
            _position++; if(_position == _List->_size) _position = 0;
            return true;
        }
    }
    else return false;
}
 
template <class Data>
bool List<Data>::Iterator::GoToPrev()
{
    if(_position < 0) return false;
    else
    {
        _node = _node->_prev;
        if(_position == 0) _position = _List->_size -1;
        return true;
    }
}
 
template <class Data>
bool List<Data>::Iterator::Show()
{
    if(GetList())
    {
        if(_position < 0) return false;
        else std::cout << (*(*this)) << std::endl;
        return true;
    }
    else return false;
}
 
template <class Data>
bool List<Data>::Iterator::ShowForward()
{
    if(GetList())
    {
        if(_position < 0) return false;
        else
        {
            for(int i = 0; i < _List->_size; i++) 
            {
                std::cout << (*(*this)) << std::endl;
                GoToNext();
            }
            return true;
        }
    }
    else return false;
}
 
template <class Data>
bool List<Data>::Iterator::ShowBack()
{
    if(GetList())
    {
        if(_position < 0) return false;
        else
        {
            for(int i = 0; i < _List->_size; i++) 
            {
                std::cout << (*(*this)) << std::endl;
                GoToPrev();
            }
            return true;
        }
    }
    else return false;
}
 
/* -- -- -- ОПЕРАТОРЫ КЛАССА 'ИТЕРАТОР' -- -- -- */
 
template <class Data>
Data& List<Data>::Iterator::operator*()
{
    if(_List != nullptr)
    {
        if(_position < 0) throw 1;
        else return _node->_data;
    }
    else throw 1;
}
 
template <class Data>
bool List<Data>::Iterator::operator==(const Iterator &) const
{
    if(_List == Iterator._List && _node == Iterator._node) {
              return true;
    } else {
           return false;
    }
}
 
/* --- --- --- --- --- List --- --- --- --- --- */
 
template <class Data>
List<Data>::List()
{
    this->_size = 0;
    this->_first = nullptr;
    this->_last = nullptr;
}
 
template <class Data>
List<Data>::List(List<Data>& user_List)
{ 
    this->Clear();
    List<Data>::Iterator Iter;
    Iter.SetList(user_List);
    if(Iter.GoToFirst())
    {
        for(int i = 0; i < this->Size(); i++)
        {
            this->Add(*Iter);
            Iter.GoToNext();
        }
    }
    /* иначе эталонная коллекция пуста, а следовательно копировать нечего */
}
 
template <class Data>
int List<Data>::GetSize() const
{
 
    return this->_size;
}
 
template <class Data>
void List<Data>::Clear()
{
    List<Data>::Iterator Iter(this);
 
    this->_size = 0;
    this->_first = nullptr;
    this->_last = nullptr;
}
 
template <class Data>
bool List<Data>::IsEmpty() const
{
    if(this->_first == nullptr || this->_last == nullptr) return true;
    else return false;
}
 
template <class Data>
bool List<Data>::IsExist(Data user_Data) const
{
    List<Data>::Node* pNode = _first;
    if(pNode == nullptr) return false; /* элемент не найден, т.к. список пуст */
    else
    {
        for(int i = 0; i < _size; i++) 
        {
            if(pNode->_data == user_Data) return true; /* элемент найден в списке */
            pNode = pNode->_next;
        }
        return false; /* элемент не найден */ 
    }
}
 
template <class Data>
Data List<Data>::GetData(int user_LogNumber) const
{
    Data t;
    if(user_LogNumber < 0 || user_LogNumber >= _size)   //ИНкоренттттТТТТТ
    {
        throw 1; /* некорректный индех */
    }
    else
    {
        if(_first == nullptr) return t; /* список пуст */
        /* Определение направления обхода списка */
        else if(user_LogNumber <= _size / 2)
        /* По порядку */
        {
            List<Data>::Node* pNode = _first;
            for(int i = 0; i < user_LogNumber; i++) 
                                 pNode = pNode->_next;
            return pNode->_data;
        }
        else
        /* В обратном порядке */
        {
            List<Data>::Node* pNode = _last;
            for(int i = 0; i < _size - (user_LogNumber + 1); i++) pNode = pNode->_prev;
            return pNode->_data;
        }
    }
}
 
template <class Data>
bool List<Data>::SetData(int user_LogNumber, Data user_Data)
{
    if(user_LogNumber < 0 || user_LogNumber >= _size) return false; /* некорректный индех */
    else
    {
        if(_first == nullptr) return false; /* список пуст */
        /* Определение направления обхода списка */
        else if(user_LogNumber <= _size / 2)
        /* По порядку */
        {
            //String::WriteLine(L"Прямой обход списка.");
            List<Data>::Node* pNode = _first;
            for(int i = 0; i < user_LogNumber; i++) pNode = pNode->_next;
            pNode->_data = user_Data;
            return true; /* ок */
        }
        else
        /* В обратном порядке */
        {
            //String::WriteLine(L"Обратный обход списка.");
            List<Data>::Node* pNode = _last;
            for(int i = 0; i <  _size - (user_LogNumber + 1); i++) pNode = pNode->_prev;
            pNode->_data = user_Data;
            return true; /* ок */
        }
    }
}
 
template <class Data>
int List<Data>::GetPosition(Data user_Data) const
{
    List<Data>::Node* pNode = _first;
    if(pNode == nullptr) return -1; /* список пуст */
    else
    {
        for(int i = 0; i < _size; i++) 
        {
            if(pNode->_data == user_Data) return i; /* индекс элемента */
            pNode = pNode->_next; SummaryGetPosition++;
        }
        return -2; /* элемент не найден */ 
    }
}
 
template <class Data>
void List<Data>::Add(Data user_Data)
{
    this->_size++;
    if(IsEmpty())
    {
        Node* pNewNode = new Node(user_Data);
        pNewNode->_next = pNewNode;
        pNewNode->_prev = pNewNode;
        this->_first = pNewNode;
        this->_last = pNewNode;
    }
    else
    {
        Node* pNewNode = new Node(user_Data);
        pNewNode->_next = this->_first;
        pNewNode->_prev = this->_last;
        pNewNode->_next->_prev = pNewNode;
        pNewNode->_prev->_next = pNewNode;
        this->_last = pNewNode;
    }
}
 
template <class Data>
bool List<Data>::AddAs(Data user_Data, int user_LogNumber)
{
    if(user_LogNumber == _size) 
    {
        Add(user_Data);
        return true;
    }
    else if(user_LogNumber < 0 || user_LogNumber > _size) return false;
    else
    {       
        _size++;
        Node* pNewNode = new Node(user_Data);
        /* Определение направления обхода списка */
        Node* pNextNode = nullptr;
        if(user_LogNumber <= _size / 2)
        /* По порядку */
        {
            pNextNode = _first;
            for(int i = 0; i < user_LogNumber; i++) 
            {
                SummaryAddAs++;
                pNextNode = pNextNode->_next;
            }
        }
        else
        /* В обратном порядке */
        {
 
            pNextNode = _last;
            for(int i = 0; i < _size - (user_LogNumber + 2); i++) 
            {
                SummaryAddAs++;
                pNextNode = pNextNode->_prev;
            }
        }
 
        pNewNode->_next = pNextNode;
        pNewNode->_prev = pNextNode->_prev;
        pNextNode->_prev->_next = pNewNode;
        pNextNode->_prev = pNewNode;
        if(user_LogNumber == 0) _first = pNewNode;
 
        return true;
    }
}
 
template <class Data>
bool List<Data>::Delete(Data user_Data)
{
    if(!IsEmpty())
    {
        List<Data>::Node* pNode = _first;
        for(int i = 0; i < _size; )
        {
            if(pNode->_data == user_Data) 
            {
                if(_size == 1) 
                {
                    _first = nullptr;
                    _last = nullptr;
                    delete pNode;
                    _size = 0;
                
                    return true;
                }
                if(i == 0) _first = pNode->_next; /* удаление первого */
                if(i == _size - 1) _last = pNode->_prev; /* удаление последнего */
                pNode->_next->_prev = pNode->_prev;
                pNode->_prev->_next = pNode->_next;
                delete pNode;
                _size--;                
                return true;
            }
            else
            {
                pNode = pNode->_next;
                i++;
 
            }
        }
        return false;
    }
    return false;
}
 
template <class Data>
bool List<Data>::DeleteAs(int user_LogNumber)
{
    
    if(user_LogNumber < 0 || user_LogNumber >= _size) return false;
    List<Data>::Node* pNode = nullptr; 
 
    if(!IsEmpty()) 
    {
        if(user_LogNumber <= _size / 2)
        /* По порядку */
        {
            pNode = _first;
            for(int i = 0; i < user_LogNumber; i++) 
            {
                pNode = pNode->_next;
            }
            if(_size == 1)
            {
                _size = 0;
                _first = nullptr;
                _last = nullptr;
                delete pNode;
                return true;
            }
            else
            {
                if(user_LogNumber == 0) _first = pNode->_next;
                if(user_LogNumber == _size - 1) _last = pNode->_prev;
                pNode->_next->_prev = pNode->_prev;
                pNode->_prev->_next = pNode->_next;
                delete pNode; _size--;
                return true;
            }
        }
        else
        /* В обратном порядке */
        {
            pNode = _last;
            for(int i = 0; i < _size - (user_LogNumber + 1); i++) 
            {
                pNode = pNode->_prev;
            }
        }
        if(_size == 1)
        {
            _size = 0;
            _first = nullptr;
            _last = nullptr;
            delete pNode;
            return true;
        }
        else
        {
            if(user_LogNumber == 0) _first = pNode->_next;
            if(user_LogNumber == _size - 1) _last = pNode->_prev;
            pNode->_next->_prev = pNode->_prev;
            pNode->_prev->_next = pNode->_next;
            delete pNode; _size--;
            return true;
        }
    }
    else return false;  
}
 
template <class Data>
void List<Data>::Sort(List<Data> *items,int left,int right) // от меньшего к большему
{
  register int i, j;
  Data x, y;
 
  i = left; j = right; 
  do {
    while(items->GetData((left+right)/2) > (items->GetData(i)) && (i < right)) 
                   i++;
    while((items->GetData(j) >items->GetData((left+right)/2) ) && (j > left))
                   j--;
 
    if(i <= j) {
       y = items->GetData(i);
       items->SetData(i,items->GetData(j));
       items->SetData(j,y);
      i++; j--;
    }
  } while(i <= j);
 
  if(left < j) Sort(items, left, j);
  if(i < right) Sort(items, i, right);
}
 
#endif

ошибки:
Код
2 D:\Project\DevCPP\Database\table.h:6,               from Column.cpp In file included from table.h:6,               from Column.cpp 
2 D:\Project\DevCPP\Database\Column.cpp                  from Column.cpp 
 D:\Project\DevCPP\Database\list.h In member function `bool List<Data>::Iterator::operator==(const List<Data>::Iterator&) const': 
258 D:\Project\DevCPP\Database\list.h expected primary-expression before '.' token 
258 D:\Project\DevCPP\Database\list.h expected primary-expression before '.' token 
258 D:\Project\DevCPP\Database\list.h In copy constructor `List<Data>::List(List<Data>&)': 
279 D:\Project\DevCPP\Database\list.h expected `;' before "Iter" 
280 D:\Project\DevCPP\Database\list.h `Iter' undeclared (first use this function) 
  (Each undeclared identifier is reported only once for each function it appears in.) 
 D:\Project\DevCPP\Database\list.h In member function `void List<Data>::Clear()': 
302 D:\Project\DevCPP\Database\list.h expected `;' before "Iter" 
 D:\Project\DevCPP\Database\list.h In member function `bool List<Data>::IsExist(Data) const': 
319 D:\Project\DevCPP\Database\list.h `pNode' undeclared (first use this function) 
 D:\Project\DevCPP\Database\list.h In member function `Data List<Data>::GetData(int) const': 
347 D:\Project\DevCPP\Database\list.h `pNode' undeclared (first use this function)
подскажите пожалуйста в чем дело?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru