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

Точки останова вечно вылезают - C++

Восстановить пароль Регистрация
 
Scorpion
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
31.05.2014, 13:59     Точки останова вечно вылезают #1
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <clocale>
 
 
using namespace std;
 
class Array
{
private: 
    int number;
    double *array;
 
    void createArr()
    {
        array = new double[];
    }
 
public:
    Array()
    {
        createArr();
 
        number = rand()%10;
        
        for (int i = 0; i < number; i++)
        {
            array[i] = rand()%100;
        }
    }
 
    Array(int number)
    {
        createArr();
 
        cout << "Веддiть " << number << " елементiв масиву" << endl << endl;
 
        for (int i = 0; i < number; i++)
        {
            cout << "A[" << i << "] = ";
            cin >> array[i];
        }
    }
};
 
void main()
{
    setlocale(LC_CTYPE, "ukr");
 
    Array arr(5);
 
    system("pause");
}
Есть у меня такой код, компилируется нормально, но в консоли, когда после введения 5-го (последнего элемента) нажимаю Ентер, выводит ошибку о срабатывании точки останова, хотя я никаких точек останова не задавал. Я уже и Визуал Студио переустанавливал, ничего не помогает.
Подскажите пожалуйста, люди добрые.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
1787 / 1502 / 538
Регистрация: 24.04.2014
Сообщений: 4,215
31.05.2014, 14:02     Точки останова вечно вылезают #2
память надо выделить под array, но правильно а не так как у тебя
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
31.05.2014, 14:06     Точки останова вечно вылезают #3
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <clocale>
 
 
using namespace std;
 
class Array
{
private: 
    int number;
    double *array;
 
    void createArr(int n)
    {
        array = new double[n];
    }
 
public:
    Array()
    {
        number = rand()%10;
        createArr(number);
 
        for (int i = 0; i < number; i++)
        {
            array[i] = rand()%100;
        }
    }
 
    Array(int number)
    {
        createArr(number);
 
        cout << "Веддiть " << number << " елементiв масиву" << endl << endl;
 
        for (int i = 0; i < number; i++)
        {
            cout << "A[" << i << "] = ";
            cin >> array[i];
        }
    }
};
 
void main()
{
    setlocale(LC_CTYPE, "ukr");
 
    Array arr(5);
 
    system("pause");
}
Как-то так должно быть.
Scorpion
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
31.05.2014, 14:19  [ТС]     Точки останова вечно вылезают #4
Не, ну задумка была в том, чтобы создать динамический массив, а не статический. Без векторов.
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
31.05.2014, 14:21     Точки останова вечно вылезают #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Scorpion, это и есть динамически создаваемый массив.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11811 / 6790 / 767
Регистрация: 27.09.2012
Сообщений: 16,840
Записей в блоге: 2
Завершенные тесты: 1
31.05.2014, 14:21     Точки останова вечно вылезают #6
Ну и сколько тут выделяется?
C++
1
array = new double[];
Scorpion
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 19
31.05.2014, 14:29  [ТС]     Точки останова вечно вылезают #7
Ага, ясно.

C++
1
2
3
4
5
6
7
void output()
    {
        for (int i = 0; i < number; i++)
        {
            cout << "A[" << i << "] = " << array[i] << endl;
        }
    }
Добавил функцию в класс, но выводит ошибку компилятора когда вызываю её в Мейне для экземпляра: "error C3867: Array::output: в вызове функции отсутствует список аргументов; используйте "&Array::output" для создания указателя на член". Как тут правильно поступить?

Я просто раньше программировал на ActionScript, там всей той мороки с указателями, черт бы их побрал, нету. А тут задали в универе лабу на С++, так не могу сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 16:41     Точки останова вечно вылезают
Еще ссылки по теме:

C++ .exe вызвал срабатывание точки останова
Срабатывание точки останова при попытке очистки памяти C++
C++ Вылетает "Вызвал срабатывание точки останова" после закрытия консоли

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

Или воспользуйтесь поиском по форуму:
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
31.05.2014, 16:41     Точки останова вечно вылезают #8
Scorpion,
Кликните здесь для просмотра всего текста
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
#include <iostream> 
#include <cstdlib>
#include <cmath>
#include <clocale>
 
using namespace std;
 
class Array
{
private: 
    int number;
    double *array;
 
    void createArr(int n)
    {
        array = new double[n];
    }
 
public:
    Array()
    {
        number = rand()%10;
        createArr(number);
 
        for (int i = 0; i < number; i++)
        {
            array[i] = rand()%100;
        }
    }
 
    Array(int number)
    {
        createArr(number);
        this->number = number;
 
        cout << "Веддiть " << number << " елементiв масиву" << endl << endl;
 
        for (int i = 0; i < number; i++)
        {
            cout << "A[" << i << "] = ";
            cin >> array[i];
        }
    }
    
    void output()
    {
        for (int i = 0; i < number; i++)
        {
            cout << "A[" << i << "] = " << array[i] << endl;
        }
    }
};
 
int main()
{
    setlocale(LC_CTYPE, "ukr");
 
    Array arr(5);
    arr.output();
 
    system("pause");
}


Необходимо перенести значение в конструктора из локальной переменной number в глобальную, чтобы её можно было использовать в методе output.

C++
1
this->number = number;
Yandex
Объявления
31.05.2014, 16:41     Точки останова вечно вылезают
Ответ Создать тему
Опции темы

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