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

Вылетает окошко. (Скриншот прилагается) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
23.04.2012, 19:06     Вылетает окошко. (Скриншот прилагается) #1
Здравствуйте, форумчане. Я написал класс. Только после ввода команды, которая закрывает консоль у меня вылетает вот такое окошко, может кто нибудь встречался с таким.
Скриншот прикреплён ниже.
Миниатюры
Вылетает окошко. (Скриншот прилагается)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 19:06     Вылетает окошко. (Скриншот прилагается)
Посмотрите здесь:

Вылетает окошко дебуггера C++
C++ Почему не работают методы списка (односвязного), при вызове ф-ий? (Код прилагается)
Borland c 5.02 при запуске по шагам (F8) вылетает окошко CPU c кодом АСМ как его убрать? C++
Как сделать в коде программы, чтобы можно было вводить числа самому, а не случайно. (Код прилагается) C++
C++ Найдите пожалуйста ошибку(код прилагается)
C++ Составить блок-схему алгоритма и программу вычисления выражения согласно условию (условие прилагается)
При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 00:30  [ТС]     Вылетает окошко. (Скриншот прилагается) #21
Kuzia domovenok, т.е. чтобы узнать их разность надо
C++
1
c=a+b;
исправить на
C++
1
c=a-b;
???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
24.04.2012, 00:32     Вылетает окошко. (Скриншот прилагается) #22
ну дык
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 19:11  [ТС]     Вылетает окошко. (Скриншот прилагается) #23
Kuzia domovenok, Объединение работает точно, а разность не верно.
К примеру:
А: {5 4 6 5}
B: {3 4 5 7}
Должно быть {6}
А выводит {6 6 6}

Добавлено через 3 минуты
Так же к примеру
А: {1 2 3 4}
B: {3 4 5 6}
А-В Должно быть {1 2}. Выводит {1 2 4 4}
В-А Должно быть {5 6}. Выводит {5 6 6 6}

Kuzia domovenok, Получается что выводятся 2 лишних элемента?

Добавлено через 18 часов 30 минут
up up
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
24.04.2012, 19:19     Вылетает окошко. (Скриншот прилагается) #24
Ну дык поставь, чтоб размер уменьшался при удалении. Ты в моём классе не разобрался?
В методе remove в конце поставь size--;
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 19:24  [ТС]     Вылетает окошко. (Скриншот прилагается) #25
К сожалению не разобрался. Да и с размерами та же песня...
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
24.04.2012, 19:32     Вылетает окошко. (Скриншот прилагается) #26
Цитата Сообщение от b0n4b Посмотреть сообщение
К сожалению не разобрался. Да и с размерами та же песня...
советую перестать задавать вопросы по отрывочным сведениям, а изучить язык Си++ с начала и до достаточного для понимания уровня.

и измени метод remove так, чтоб он выглядел следующим образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool remove(int value){
      int i;
      bool searching=true;
      for (i=0; (i<size)&&(searching); i++)   
        if (data[i]==value) searching=false;
      if (!searching){
        for (i=i-1; i<size-1; i++)
          data[i]=data[i+1];
        size--;
        return true;
      }
      return false;
    };
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 20:03  [ТС]     Вылетает окошко. (Скриншот прилагается) #27
Kuzia domovenok, уже не удобно задавать такие вопросы, но всё же сделаю это.
Как в вашей программе проверить входит ли какое либо число в множество А и В, как реализовать пересечение, и как вообще вывести оба множества на экран?
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2012, 20:14     Вылетает окошко. (Скриншот прилагается) #28
Меня насторожил конструктор преобразования
Цитата Сообщение от b0n4b Посмотреть сообщение
Mnozh::Mnozh(int r)
{
* * size_a=0, size_b=0, size_c=0;
* * A=new int[size_a], B=new int[size_b], C=new int[size_c];
* * b=0, i=0, j=0, q=0, count=0, tmp=0;
}
Неужели не видно что size_a=0, size_b=0, size_c=0 проинициализированы нулём, ну и как мы хотим память под ноль выделить A=new int[size_a], B=new int[size_b], C=new int[size_c];

Добавлено через 3 минуты
b0n4b, можешь описать роль переменной r
Цитата Сообщение от b0n4b Посмотреть сообщение
Mnozh::Mnozh(int r)
она как бы вообще ничего не делает, а по идеи должна содержать скажем число элементов и использоваться для выделения памяти, ну это моё мнение конечно...
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 20:18  [ТС]     Вылетает окошко. (Скриншот прилагается) #29
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
она как бы вообще ничего не делает, а по идеи должна содержать скажем число элементов и использоваться для выделения памяти, ну это моё мнение конечно...
-=ЮрА=-, я понимаю, что она ничего не делает, просто без этого не работает, а что там должно быть, мне не известно.
-=ЮрА=-
Заблокирован
Автор FAQ
24.04.2012, 20:23     Вылетает окошко. (Скриншот прилагается) #30
Цитата Сообщение от b0n4b Посмотреть сообщение
-=ЮрА=-, я понимаю, что она ничего не делает, просто без этого не работает, а что там должно быть, мне не известно.
- ну попробуй так чтоли
C++
1
2
3
4
5
6
7
8
Mnozh::Mnozh(int r)
{
    size_a=0, size_b=0, size_c=0;
    A=new int[(size_a = r)];
    B=new int[(size_b = r)];
    C=new int[(size_c = r)];
    b=0, i=0, j=0, q=0, count=0, tmp=0;
}
(я хочу по-быстрому залатать твой алгоритм, в логику вникать не хочу пока что)
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 21:36  [ТС]     Вылетает окошко. (Скриншот прилагается) #31
Цитата Сообщение от b0n4b Посмотреть сообщение
Kuzia domovenok, уже не удобно задавать такие вопросы, но всё же сделаю это.
Как в вашей программе проверить входит ли какое либо число в множество А и В, как реализовать пересечение, и как вообще вывести оба множества на экран?
Сможешь ответить на эти вопросы?
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
24.04.2012, 22:08     Вылетает окошко. (Скриншот прилагается) #32
Цитата Сообщение от b0n4b Посмотреть сообщение
Kuzia domovenok, уже не удобно задавать такие вопросы, но всё же сделаю это.
Как в вашей программе реализовать пересечение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  ///////...............
    friend set operator - (set, set);
    friend set operator ^ (set, set);
    ~set(){delete[] data;};
};
set operator ^ (set a, set b){
  set temp;
  bool searching;
  int i, j;
  for (j=0; j<a.size; j++){
    searching=true;
    for (i=0; (i<b.size)&&(searching); i++)
      if (a[j]==b[i]){temp.add(a.data[j]); searching=false;
  }
  return temp;
}
//////.....
Как в вашей программе проверить входит ли какое либо число в множество А и В, как реализовать
C++
1
2
3
4
bool set::includes(int value){
for (int i=0; i<size; i++) if (data[i]==value) return true;
return false;
}
, и как вообще вывести оба множества на экран?
C++
1
for (int i=0; i<a.getsize(); i++)cout<<a[i];
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
25.04.2012, 22:54  [ТС]     Вылетает окошко. (Скриншот прилагается) #33
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
#include <iostream>
using namespace std;
 
const int CHUNK_SIZE=10;
class set
{
protected:
    int *data;
    int size;
    int bufsize;
    int name;
 
public:
    const int getsize()
    {
        return size;
    }
    const int buffersize()
    {
        return bufsize;
    }
    set(int n=0):size(0), bufsize(CHUNK_SIZE)
    {
        data=(new int[CHUNK_SIZE]);
        name=n;
    }
    set(set& copy): size(copy.size), bufsize(copy.bufsize)
    {
        data=new int[bufsize];
        for(int i=0; i<size; i++)
            data[i]=copy.data[i];
    };
    set& operator = (set& copy)
    {
        int i;
        if (this!=&copy)
        {
            delete[] data;
            size=copy.size;
            bufsize=copy.bufsize;
            data=new int[bufsize];
            for(i=0; i<size; i++)
                data[i]=copy.data[i];
        }
        return *this;
    };
 
    void add(int value)
    {
    int i;
    int* d;
    bool searching=true;
    for(i=0; (i<size)&&(searching); i++)
        if (data[i]==value) searching=false;
            if (searching)
            {
                data[size]=value;
                size++;
                if(size==bufsize)
                {
                    bufsize+=CHUNK_SIZE;
                    d=new int[bufsize];
                    for(i=0; i<size; i++)
                        d[i]=data[i];
                        delete[] data;
                        data=d;
                }     
            }
    };
 
    bool remove(int value)
    {
        int i;
        bool searching=true;
        for (i=0; (i<size)&&(searching); i++)   
            if (data[i]==value) 
                searching=false;
            if (!searching)
            {
                for (i=i-1; i<size-1; i++)
                data[i]=data[i+1];
                size--;
                return true;
            }
            return false;
    };
    int operator[] (int id)
    {
        if ((id<size)&&(id>=0)) 
            return data[id]; 
        else 
        {
            std::cerr<<"Error index "; return 0;
        }
    }
    
    friend set operator + (set, set);
    friend set operator - (set, set);
 
    ~set()
    {
        delete[] data;
    };
 
    set operator + (set a, set b)
    {
        set temp=a;
        temp.name=10*a.name;
        int i;
        for (i=0; i<b.size; i++)
            temp.add(b.data[i]);
        return temp;
    }
 
    set operator - (set a, set b)
    {
        set temp=a;
        int i;
        for (i=0; i<b.size; i++)
            temp.remove(b.data[i]);
        return temp;
    }
 
    set operator ^ (set a, set b)
    {
        set temp;
        bool searching;
        int i, j;
        for (j=0; j<a.size; j++)
        {
            searching=true;
            for (i=0; (i<b.size)&&(searching); i++)
                if (a[j]==b[i]){temp.add(a.data[j]); 
                    searching=false;
        }
        return temp;
    }
 
    bool set::includes(int value)
    {
        for (int i=0; i<size; i++) 
            if (data[i]==value) 
                return true;
        return false;
    }
 
};
 
 
int main()
{
    setlocale (LC_ALL, "Russian");
    set a(1);
    set b(2);
    set c(3);
    a.add(1);
    a.add(2);
    a.add(3);
    a.add(4);
    b.add(3);
    b.add(4);
    b.add(5);
    b.add(6);
    c=a+b;
    for (int i=0; i<c.getsize(); i++) 
    cout<<c[i]<< " ";
    cout <<"- Объединение\n";
    c=a-b;
    for (int i=0; i<c.getsize(); i++) 
    cout<<c[i]<< " ";
    cout <<"- А-В\n";
    c=b-a;
    for (int i=0; i<c.getsize(); i++) 
    cout<<c[i]<< " ";
    cout <<"- В-А\n";
    cout << set a;
    for (int i=0; i<a.getsize(); i++)
        cout<<a[i]<<" ";
    cout << "- Mn A";
        for (int i=0; i<a.getsize(); i++)
        cout<<a[i]<<" ";
    cout << "- Mn B";
    return 0;
}
Выдаёт 7 ошибок
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 23:28     Вылетает окошко. (Скриншот прилагается)
Еще ссылки по теме:

В двухмерном массиве, рассчитать функцию и произведения (Код прилагается) C++
C++ Создать меню для работы с программой заполнения массива, используя функции. код прилагается
C++ Задать должность в виде массива. Код прилагается
C++ Класс Student. Код прилагается
Однорукий бандит. код прилагается C++

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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,910
Записей в блоге: 1
25.04.2012, 23:28     Вылетает окошко. (Скриншот прилагается) #34
А каким макаром операторы вдруг стали частями класса(членами)???
Я тебе выкладывал программу, где они совершенно отдельные функции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class set
{
/////
    friend set operator + (set, set);
    friend set operator - (set, set);
    friend set operator ^ (set, set);
};
/////////////////////////
    set operator + (set, set){///никакого set::operator!!!!
             //////
    }
    set operator - (set, set){
          ////////
        }
   set operator ^ (set, set){
          ////////
        }
Yandex
Объявления
25.04.2012, 23:28     Вылетает окошко. (Скриншот прилагается)
Ответ Создать тему
Опции темы

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