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

Ошбика в алгоритме нахождения разности множеств - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Решил, уйти от Delphi в С++ http://www.cyberforum.ru/cpp-beginners/thread663445.html
Долго метался куда стучать, решил сюда. В общем проблема: занимаюсь Delphi, хотя как сказать занимаюсь - паузу себе 2х месячную сделал, и вот сел как-то на днях попрогить, тут будто осенило - а перспективен ли сейчас Delphi и программы на нем? Понимаю, по сравнению с С++ функционал у него намного уже, но хороший специалист в своей области не пропадет, всегда будет нужен и востребован. Оставаться...
C++ Структуры. Ввод значения поля Проблема: при заполнении полей пишет переменная не инициализирована. Т.е. если я в коде инициализирую, то считает. А когда делаешь запрос на ввод вылетает. Подскажите пожалуйста. Вот код: #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; struct vector { double x; double y; http://www.cyberforum.ru/cpp-beginners/thread663427.html
Где то ошибка C++
Помогите вот текст программы не могу разобраться что да как. Все вроде правильно. #include <stdio.h> #include <iostream> #include <math.h> void main() { double h,a,b,S,i; int z; printf(" Viberite deistvie \n 1.Vvodim katet \n 2.Vvodim gipotinuzu \n 3.Vvodim visoty \n 4. Ploshad");
C++ Определить, какие слова из текста имеют длину от 1 до 10, и вывести их в порядке возрастания длины
Определить сколько слов текста имеют длину 1, 2, 3, ... 10 символов. Вывести эти слова в последовательности возрастания их длины.
C++ Borland C++ и запрет интерфейса за клавиатрой http://www.cyberforum.ru/cpp-beginners/thread663419.html
нужно запретить а потом разрешыть интерфейс за клавиатурой.....так звучит задание...... как я понял нужно перевести линию синхронизации в нулевое состояние и этим самим запретить передачу данних от клавиатуры ...это то что я понял из методички.... но как реализовать это я без малейшего понятия... кто-то может помоч?
C++ Подсчёт суммы отрицательных чисел Создайте программу, которая считает сумму отрицательных чисел, которая ввелась. Помогите пожалуйста??? подробнее

Показать сообщение отдельно
Elfenlide
23 / 23 / 1
Регистрация: 15.04.2012
Сообщений: 183
04.10.2012, 21:41  [ТС]     Ошбика в алгоритме нахождения разности множеств
Цитата Сообщение от I.M. Посмотреть сообщение
Наверняка вы его добавляли во вложенный цикл. Т.е. не туда.
Булевый флаг должен инициализироваться до цикла по j и проверяться один раз после цикла по j. Т.е. для каждого i будет одна проверка
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
Set& Set::operator-(const Set &set)
{
    Set *raznost = new Set;
    bool flag;
 
    if (this->size != 0 && set.size != 0)
    {
        for (int i = 0; i < this->size; ++i)
        {
            flag = true;
 
            for (int j = 0; j < set.size; ++j)
            {
                if (this->data[i] == set.data[j])
                {
                    flag = false;
                    break;
                }
                if (flag)
                {
                    raznost->data[raznost->size] = this->data[i];
                    ++(raznost->size);
                }               
            }
        }
    }
    else {
        raznost->size = 0;
        return *raznost;
    }
    return *raznost;
}
вот я так делал, и ничего...Даже если так прикинуть то выходит что:
Флаг устанавливается в "1", и становиться 0 только если значение х == у, а так как не равно, то и значение останется "1" у булевой переменной. В итоге сработает if(flag)

Добавлено через 4 минуты
Цитата Сообщение от Elfenlide Посмотреть сообщение
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
Set& Set::operator-(const Set &set)
{
    Set *raznost = new Set;
    bool flag;
 
    if (this->size != 0 && set.size != 0)
    {
        for (int i = 0; i < this->size; ++i)
        {
            flag = true;
 
            for (int j = 0; j < set.size; ++j)
            {
                if (this->data[i] == set.data[j])
                {
                    flag = false;
                    break;
                }
                if (flag)
                {
                    raznost->data[raznost->size] = this->data[i];
                    ++(raznost->size);
                }               
            }
        }
    }
    else {
        raznost->size = 0;
        return *raznost;
    }
    return *raznost;
}
вот я так делал, и ничего...Даже если так прикинуть то выходит что:
Флаг устанавливается в "1", и становиться 0 только если значение х == у, а так как не равно, то и значение останется "1" у булевой переменной. В итоге сработает if(flag)
Я понял свою ошибку)\\\Спасибо вам большое всем!)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru