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

Ошибка в классе IntegerSet - C++

Восстановить пароль Регистрация
 
denfox_pro
0 / 1 / 0
Регистрация: 30.10.2012
Сообщений: 113
29.11.2013, 22:08     Ошибка в классе IntegerSet #1
IntegerSet.h:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
//#ifndef _INTEGERSET_H
#define _INTEGERSET_H
class IntegerSet
{
public:
    IntegerSet();
    IntegerSet(int);
    ~IntegerSet();
    IntegerSet *UnionOfSets(const IntegerSet&) const; //элемент-функция обьединения двух множеств
    IntegerSet *IntersectionOfSets(const IntegerSet&) const; //элемент-функция пересечения двух множеств 
    void size(); //функция задания размера массива в диапазоне [0..100]
    void insertElement(); //функция добавления элемента во множество
    void deleteElement(); //функция удаления элемента из множества
    void setArray(int, int); //функция установки массива множества
    void printSet() const; //функция выводя множества на экран
    bool isEqualTo(const IntegerSet& ) const;
   private:
        int integerSet[100];
};
IntegerSet.cpp:
C++ (Qt)
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
#include "StdAfx.h"
#include "IntegerSet.h"
#include <iostream>
using namespace std;
IntegerSet::IntegerSet()
{
for(int i=0;i<101;i++)
    integerSet[i]=0;
 
}
 
IntegerSet::~IntegerSet()
{
    int arrayFig;
    int i;
    cout<<"Введите элементы, которые нужно удалить::\n";
    cout<<"(чтобы завершить ввод введите 999)\n";
    for(int p=1;p<101||i!=999;p++)
    {
      cin>>i;
      if (i==999)  break;
      if(i<0||i>100)
      {
        cout<<"Вы ввели не правильный элемент! Введите его снова придерживаясь диапазона от 0 до 100\n";
      }
    else
      {
       arrayFig=0;
       setArray(arrayFig, i);
      }
    }
}
 
void IntegerSet::insertElement() //функция ввода элементов множества
{
    int arrayFig;
    int i;
    cout<<"(чтобы завершить ввод введите 999)\n";
    for(int p=1;p<100||i!=999;p++)
    {
    cout<<p<<": "; cin>>i;
    if (i==999)
        break;
    if(i<0||i>100)
    {
        cout<<"Вы ввели не правильный элемент! Введите его снова придерживаясь диапазона от 0 до 100\n";
    }
    else
    {
    arrayFig=1;
    setArray(arrayFig, i);
    }
    }
}
 
void IntegerSet::setArray(int a, int b)
{
    integerSet[b]=a;
}
IntegerSet *IntegerSet::UnionOfSets(const IntegerSet& integer) const //элемент-функция обьеденения двух множеств
{
    IntegerSet *p=new IntegerSet();
    for (int i=0;i<101;i++)
    {
        if (integer.integerSet[i]==1||integerSet[i]==1)
            p->integerSet[i]=1;
        else 
            p->integerSet[i]=0;
    }
    return p;
}
IntegerSet *IntegerSet::IntersectionOfSets(const IntegerSet& integer) const //элемент-функция обьеденения двух множеств
{
    IntegerSet *p=new IntegerSet();
    for (int i=0;i<101;i++)
    {
        if (integer.integerSet[i]==0||integerSet[i]==0)
            p->integerSet[i]=0;
        else 
            p->integerSet[i]=1;
    }
    return p;
}
 void IntegerSet::printSet() const
{
    int count=0;
    for (int i=1;i<100;i++)
    {
        if (integerSet[i]==1) cout<<i<<" ";
        else count++;
        if (count==100) cout<<"---\n";
    }
    cout<<endl;;
}
bool IntegerSet::isEqualTo(const IntegerSet& integer) const
{
    int count=0;
    for(int i=0;i<101;i++)
    {
        if (integer.integerSet[i]!=integerSet[i])
        {
            cout<<"Наборы не являются равными!";
            return 1;
        }
    }
    cout<<"Наборы являются равными!";
            return 0;
}
void main:
C++ (Qt)
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
// IntSet_LR5.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "IntegerSet.h"
#include <iostream>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(0,"rus");
    IntegerSet a, b;
    cout<<"Пожалуйста введите числа во множество А:\n";
    a.insertElement();
    cout<<"Элементы множества А: "<<endl;
    a.printSet();
    a.~IntegerSet();
    cout<<"Элементы множества A после удаления: "<<endl;
    a.printSet();
    b.insertElement();
    cout<<"Пожалуйста введите числа во множество В:\n";
    b.printSet();
    a.isEqualTo(b);
    IntegerSet *setunion = a.UnionOfSets(b);
    IntegerSet *setinersection=a.IntersectionOfSets(b);
    return 0;
}

ошибка: Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 22:08     Ошибка в классе IntegerSet
Посмотрите здесь:

ошибка в классе C++
C++ Ошибка в классе
Ошибка в классе C++
Ошибка в классе C++
C++ Ошибка в классе
Ошибка в классе C++
C++ Ошибка с полем в классе
C++ Ошибка в классе

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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