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

Исправить ошибку в коде - C++

Восстановить пароль Регистрация
 
niran
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 19
13.12.2013, 16:35     Исправить ошибку в коде #1
помогите найти ошибку . студия 2012

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include "queue.h"
using namespace std;
 
int main() 
{
    Queue a,c;
    cin >> a;
    Queue b(a);
    cin >> c;
    cout <<endl<<a<<endl<<c<<endl<<b<<endl;
    
    /*cout <<endl<< q.getSize()<<endl;
    */
    /*while (!q.isEmpty())
    {
        cout << q.front() << endl;
        q.pop();
    }*/
 
    return 0;
}
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
#include "Queue.h"
#include <iostream>;
using namespace std;
 
Queue :: Queue() //конструктор
{
    size = 0;
    maxsize = 10;
    arr = new int[maxsize];
    first = 0;
}
 
ostream & operator<<(ostream&  out, Queue & queue)
{
    for (int i=queue.first;i<queue.size + queue.first ;i++)
        out<<queue.arr[i]<<" ";
    return out;
}
 
istream & operator>>(istream&  in, Queue & queue)
{
    int n;
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        int x;
        in >> x;
        queue.push(x);
    }
    return in;
}
 
 
void Queue :: push(int value)
{
     if (size == maxsize)
     {
          int *secarr = new int[size];
          for (int i = 0; i < size; ++i)
               secarr[i] = arr[i];
          delete[] arr;
          maxsize *= 2;
          arr = new int[maxsize];
          for (int i = 0; i < size; ++i)
               arr[i] = secarr[i];
     }
    arr[size++] = value;
}
 
void Queue :: pop()
{
    if (isEmpty())
        return;
     if (size * 4 < maxsize)
     {
          maxsize /= 2;
          int *secarr = new int[size];
          for (int i = first; i < size + first; ++i)
               secarr[i - first] = arr[i];
          delete[] arr;
          arr = new int[maxsize];
          for (int i = 0; i < size; ++i)
               arr[i] = secarr[i];
          delete[] secarr;
          first = 0;
     }
     ++first;
    --size;
}
 
bool Queue :: isEmpty()
{
    if (size)
        return false;
    return true;
}
 
int Queue :: front()
{
    if (!isEmpty())
 
    return arr[first];
}
 
int Queue :: getSize()
{
    return size;
}
 
Queue :: ~Queue( )
{
    delete [] arr;
    cout<<endl<<"arr is deleted"<<endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "queue.h"
using namespace std;
 
int main() 
{
    Queue a,c;
    cin >> a;
    Queue b(a);
    cin >> c;
    cout <<endl<<a<<endl<<c<<endl<<b<<endl;
    
    
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 16:35     Исправить ошибку в коде
Посмотрите здесь:

Исправить ошибку в коде C++
Исправить ошибку в коде с++ C++
C++ Исправить ошибку в коде
C++ исправить ошибку в коде
C++ Исправить ошибку в коде.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.12.2013, 16:38     Исправить ошибку в коде #2
Цитата Сообщение от niran Посмотреть сообщение
помогите найти ошибку
Лень копаться в вашем коде. Могли бы написать название ошибки и строчку на которой она возникает.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
13.12.2013, 16:43     Исправить ошибку в коде #3
Цитата Сообщение от niran Посмотреть сообщение
Queue b(a);
не наблюдаю конструктора копирования
Цитата Сообщение от niran Посмотреть сообщение
int *secarr = new int[size];
где delete для secarr?
niran
0 / 0 / 0
Регистрация: 13.12.2013
Сообщений: 19
13.12.2013, 16:53  [ТС]     Исправить ошибку в коде #4
спасибо . забыл удалить Queue b(a);
Yandex
Объявления
13.12.2013, 16:53     Исправить ошибку в коде
Ответ Создать тему
Опции темы

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