Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Zorro33
0 / 0 / 0
Регистрация: 28.05.2017
Сообщений: 1
#1

Операции с булевыми массивами в классе выполняются, но возвращают неправильные результаты - C++

28.05.2017, 00:36. Просмотров 89. Ответов 2
Метки нет (Все метки)

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
class set 
{private: 
int max; 
int n; 
bool *a; 
public: 
set(int ms) 
{ 
 n=ms; 
 max=ms; 
 a=new bool[ms+1]; 
 for(int i=0;i<ms;i++) 
 a[i]=false; 
 a[ms]=true; 
}
bool equal(set s) 
{ 
 if (n!=s.n) 
 return false; 
 for (int i=0;i<n;i++) 
 {if (a[i]!=s.a[i]) 
  {cout«i«" "; 
  return false; 
  } 
 } 
return true; 
} 
};
void main() 
{set x1(20); 
set x2(20);
a=x1.equal(x2); 
if (a) 
cout«"Equall"«endl; 
else 
cout«"Not equall"«endl;
Существует класс множество(сет), в котором есть несколько функций типа объединения множеств или (в данном примере) проверки на равенство 2-ух множеств. При запуске работает исправно, но после выполнения функции запрашиваю вывод значений массива, и там появляются числа "192" "23" "2" "192" "23" "2" ... В чем может быть проблема и как решить?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2017, 00:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Операции с булевыми массивами в классе выполняются, но возвращают неправильные результаты (C++):

Неправильно выполняются мат операции - C++
Всем привет! Сделал такую небольшую программку: #include &lt;iostream&gt; using namespace std; void main() { int c,i,dig; double...

Какие три операции выполняются при while(*str++)? - C++
#include &lt;stdio.h&gt; using namespace std; int strLength(const char* str){ int size=1; while (*str++){

при вводе четного числа. все операции необходимые выполняются, но потом переходит на нечетные.есть код. помогите, пожалуйста - C++
вот при вводе нечетного числа, все идет хорошо. а как введу четное, то при выполнении операций, программа переходит дальше по тексту, будто...

Операции с одномерными массивами - C++
Не знаю как правильно вычислить (a1+a20)(a2+a19)...........(a11+a10) Не кидайтесь камнями,пожалуйста)))Чего именно не хватает? ...

Перегрузка операции < в классе - C++
Хочу создать шаблон внутри класса Прототип template &lt;typename T&gt; bool operator&lt;(T &amp;); Определение template &lt;typename T&gt; ...

Коллекции. Операции с булевыми значениями. Random - Java SE
Есть класс driver. public class Driver { private boolean ready_driver; private String driver_name; private...

2
kylroma
Одессит
204 / 75 / 23
Регистрация: 30.12.2013
Сообщений: 277
Записей в блоге: 1
Завершенные тесты: 2
28.05.2017, 11:05 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вы просто мастер объяснять. Нифига не понятно в чём проблема. Можете привести тот код, в котором возникает проблема?
Исправьте пожалуйста
C++
1
bool equal(set s)
на
C++
1
bool equal(const set &s)
И добавьте деструктор в котором освобождается память выделенная для bool *a;
1
anapshy
172 / 176 / 75
Регистрация: 14.11.2016
Сообщений: 689
Завершенные тесты: 3
28.05.2017, 11:21 #3
Zorro33,
1) В чём проблема-то? Как ты запрашиваешь вывод массива?
2) Память не забывай освобождать.
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
#include <iostream>
class set {
private:
    int max, n;
    bool *a;
public:
    set(const int ms) {
        n = ms;
        max = ms;
        a = new bool[ms + 1];
        for (int i(0); i < ms; i++)
            a[i] = false;
        a[ms] = true;
    };
    bool equal(const set &s) const {
        if (n != s.n)
            return false;
        for (int i(0); i < n; i++)
            if (a[i] != s.a[i]) {
                std::cout << i << " ";
                return false;
            }
        return true;
    }
    ~set(void) { delete[] a; };
};
 
int main(void) {
    set x1(20);
    set x2(20);
    bool a = x1.equal(x2);
    std::cout << (a ? "Equal" : "Not Equall") << std::endl;
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2017, 11:21
Привет! Вот еще темы с ответами:

В одном классе нужно создать массив, а в классе program его вывести. "Не все ветви кода возвращают значение" - C#
В одном классе нужно создать массив, а в классе program его вывести, помогите, как разобраться namespace con { class Array ...

Программа выводит неправильные результаты - Turbo Pascal
program d; uses crt; var a:array of integer; s:real; i,n,k: integer; begin randomize; writeln('Введите размер массива'); ...

Неправильные результаты математических функций - C (СИ)
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; int main() { //const float PI = 3.14; float a = 1; double...

Может ли memtest показывать неправильные результаты - Оперативная память
Всем привет. Знакомый принес ноутбук. Сказал, что иногда появляются синии экраны. Я стал прогонять memtest'ом, memtest выдал ошибки памяти....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru