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

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

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

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

31.05.2014, 13:59. Просмотров 362. Ответов 7
Метки нет (Все метки)

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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 13:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Точки останова вечно вылезают (C++):

Срабатывание точки останова - C++
Срабатывание точки останова при удалении указателя. Почему так? Кто-нибудь объяснит? #include &lt;iostream&gt; #define RT 100 int main()...

Вызывание точки останова - C++
Ввести целое число N. Выделить из этого числа цифры, кратные m, и записать их в одномерный массив.-Условие задачи. Ниже моё...

Exe вызвал срабатывание точки останова - C++
Насколько я понимаю, это утечка памяти. Не могу понять почему, matrix вроде нормально очищает память. Ошибка возникает только при при...

Ошибка (вызвали срабатывание точки останова) - C++
1)Компилятор ошибка (вызвали срабатывание точки останова.) Как очистит память ? 2)как разъединить буквы и цифры и записать в массив ...

.exe вызвал срабатывание точки останова - C++
Почему так происходит, пример из учебника. #include &lt;stdio.h&gt; #include &quot;mpi.h&quot; #include &quot;conio.h&quot; int main(int argc, char*...

Ошибка в программе. Срабатывание точки останова - C++
Класс матрицы,операторы суммы,присваивания и умножения матриц. #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jewbacabra
Эксперт PHP
2322 / 1986 / 747
Регистрация: 24.04.2014
Сообщений: 5,818
31.05.2014, 14:02 #2
память надо выделить под array, но правильно а не так как у тебя
Pjeroo
Землянин
34 / 34 / 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
Землянин
34 / 34 / 12
Регистрация: 15.01.2013
Сообщений: 313
31.05.2014, 14:21 #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Scorpion, это и есть динамически создаваемый массив.
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,222
Записей в блоге: 3
Завершенные тесты: 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, там всей той мороки с указателями, черт бы их побрал, нету. А тут задали в универе лабу на С++, так не могу сделать.
Pjeroo
Землянин
34 / 34 / 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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2014, 16:41
Привет! Вот еще темы с ответами:

Код вызвал срабатывание точки останова - C++
// AVal - массив анализируемых данных, Nvl - длина массива должна быть кратна степени 2. // FTvl - массив полученных значений, Nft -...

Компилятор ошибка (вызвали срабатывание точки останова) - C++
1)Компилятор ошибка (вызвали срабатывание точки останова.) Как очистит память ? 2)как разъединить буквы и цифры и записать в массив ...

Ошибка: ConsoleApplication1.exe вызвал срабатывание точки останова - C++
Потихоньку начинаю разбираться в работе с файлами, но пока без особых успехов. Прекрасно понимаю, что это ужаснейший говнокод, буду...

Срабатывание точки останова при попытке очистки памяти - C++
Здравствуйте! Суть задания - есть массив, заполненный случайными числами. Потом это массив нужно изменить, от первых его k нечетных...


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

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

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