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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
#1

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

23.04.2012, 19:06. Просмотров 1512. Ответов 33
Метки нет (Все метки)

Здравствуйте, форумчане. Я написал класс. Только после ввода команды, которая закрывает консоль у меня вылетает вот такое окошко, может кто нибудь встречался с таким.
Скриншот прикреплён ниже.
Миниатюры
Вылетает окошко. (Скриншот прилагается)  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2012, 19:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вылетает окошко. (Скриншот прилагается) (C++):

Вылетает окошко дебуггера - C++
После установки Visual Studio 2005 или 2008 временами вылетает окошко дебуггера от Visual Studio, что то вроде remote debeger, нажимаю No,...

При отладке программы вылетает окошко с ошибкой: использование переменной без инициализации - C++
код: #include <iostream> #include <conio.h> int A,n,m; using namespace std; void poisk1(); void poisk2(); int main() ...

Borland c 5.02 при запуске по шагам (F8) вылетает окошко CPU c кодом АСМ как его убрать? - C++
День добрый. Кто знает подскажите пожалуйста в Borland C++ 5.02 при пошаговом запуске программы выдает окошко CPU с асемблерным кодом как...

Класс Student. Код прилагается - C++
Создать класс Student. Класс имеет атрибуты name(имя), surname(фамилия), patronymic(отчество), yearBirth(год рождения), kurs(курс), ...

Однорукий бандит. код прилагается - C++
Помогите доделать с использованием очередей. Создать имитацию игры "однорукий бандит". Например, при нажатии кнопки "Enter" происходит...

Найдите пожалуйста ошибку(код прилагается) - C++
ЗАДАЧА. Составить программу вычисления значения выражения f (x), для значений параметра x, который меняется на интервале min max xx с ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
23.04.2012, 23:36 #16
Цитата Сообщение от b0n4b Посмотреть сообщение
stawerfar, а что после этого изменится в программе? Скорость, кол-во памяти, или нет смысла что-то менять?
На производительность это не повлеяет, а смысл заключаестя в эстетике программирования и читаемости кода.Проще говоря мы говорим "каво" а пишем "кого", хотя можно говорить "кого" и тебя все поймут.

Добавлено через 5 минут
В учебниках пишут что нужно придерживаться хорошего тона программирования, что бы листинги было легко читать, и работать с ним! Вот собственно и вся разница!
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
23.04.2012, 23:39  [ТС] #17
stawerfar, спасибо. В таком случае оставлю как было.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
24.04.2012, 00:10 #18
Цитата Сообщение от b0n4b Посмотреть сообщение
Чтобы вы могли предложить по этому поводу?
Создать нормальный класс "множество", который будет хранить ОДНО множество. И будет универсален,
а не ограничен a, b, c
И при этом не извращаться с многократными созданиями различных динамических массивов.
Специально для вас, ловите:
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
#include <iostream>
const int CHUNK_SIZE=10;
class set{
  protected:
    int *data;
    int size;
    int bufsize;
  public:
    const int getsize(){return size;}
    const int buffersize(){return bufsize;}
    set():size(0), bufsize(CHUNK_SIZE){
    data=(new int[CHUNK_SIZE]);
    }
    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];
        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;
  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;
}
int main(){
set a;
set b;
set c;
a.add(5);
a.add(4);
a.add(6);
a.add(5);
b.add(3);
b.add(4);
b.add(5);
b.add(7);
c=a+b;
 
for (int i=0; i<c.getsize(); i++) 
std::cout<<c[i]<<std::endl;
return 0;
}
b0n4b
2 / 2 / 0
Регистрация: 16.11.2011
Сообщений: 100
24.04.2012, 00:12  [ТС] #19
Kuzia domovenok, большое спасибо)

Я пока не успел разобраться, этот класс поддерживает те же команды, что и в моём варианте?
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
24.04.2012, 00:26 #20
Цитата Сообщение от stawerfar Посмотреть сообщение
int*** MAS= new int**[ciMAX];
ого!! аж три звезды! а зачем?

Добавлено через 12 минут
мой пока поддерживает объединение (оператор +)
разность (оператор -)
пересечение надо добавить как
C++
1
2
3
4
5
6
7
8
9
10
11
friend set intersection(set a, set b){
set result;
bool present;
if (a.size()>b.size())
for (int i=0; i<b.size; i++){
present=false
for (int j=0; (j<a.size)&&(!present); j++)
if (a[i]==b[j])present=true;
result.add(a[i]);
return result;
}
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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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;
}
(я хочу по-быстрому залатать твой алгоритм, в логику вникать не хочу пока что)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2012, 20:23
Привет! Вот еще темы с ответами:

Задать должность в виде массива. Код прилагается - C++
Помогите исправить что не так! :help: И задать должность в виде массива. Создать структуру рабочий: --фио /*может быть тоже...

В двухмерном массиве, рассчитать функцию и произведения (Код прилагается) - C++
Ввести двумерный массив размерностью 5х6(обычный не динамический и работа с ним без использования указателей). Рассчитать в одной...

Почему не работают методы списка (односвязного), при вызове ф-ий? (Код прилагается) - C++
Написал такой код, для односвязного списка. И когда начал компилировать, столкнулся с проблемой : не работают методы. Ошибка в том,...

Составить блок-схему алгоритма и программу вычисления выражения согласно условию (условие прилагается) - C++
Помогите составить блок-схему алгоритма и программку на с++ Формулы переписывайте в сообщение с помощью редактора внизу страницы


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.04.2012, 20:23
Ответ Создать тему
Опции темы

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