0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
1

Простая программка (найти ошибку в коде)

08.06.2013, 18:14. Показов 307. Ответов 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
#include<iostream>
#include<conio.h>
using namespace std;
 
 
class ARR
{
    public:
    int i;
    int *data;
 
    ARR(){i=0;};
    ~ARR(){};
    void add(int r){
        data[i]=r;
        i++;
    }
};
void main()
{
    int y=9;
    ARR One;
    One.add(y);
    cout<<One.data;
    _getch();
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2013, 18:14
Ответы с готовыми решениями:

(Не)простая последовательность. Найти ошибку в коде
Задача Написать программу, которая распечатывает 20 членов случайной последовательности,...

Простая программка
Здравствуйте, помогите пожалуйста с написанием программки на VB, посмотрел половину форума, что то...

простая программка с if и switch, пожалуйста!!
составить простую программу сначала с if,а потом и со switch. можно и разные. программка типа:...

Троян или простая программка
Почитал про то что при загрузке винды у пользователя появлялась картинка с текстом отправить СМС ....

3
211 / 130 / 28
Регистрация: 20.03.2009
Сообщений: 1,123
Записей в блоге: 16
08.06.2013, 18:30 2
У вас не выделяется память под data. Должно быть что-то вроде
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
class ARR
{
    public:
    int i;
    int *data;
 
    ARR(): i(0), data(0) {}   //Используем список инициализации вместо присваивания в теле функции
    APR(int sz):
       i(sz), data(new int[sz])   //Другой конструктор, в котором создаем массив размера sz
       {
       for (int k = 0; k < sz; ++k)   //В теле конструктора инициализируем элементы нулями
              data[k] = 0;
       }
    ~ARR() { delete[] data; }   //Освобождаем память, если применяем delete к нулевому указателю, ничего не происходит
    void add(int r)
    {
       int* temp = new int[i + 1];   //Создаем новый массив размера на единицу больше, копируем в него старые значения
       for (int k = 0; k < i; k++)
              temp[k] = data[k];
       temp[i]=r;   //Добавляем в последний элемент новое значение
       delete[] data;   //Удаляем старый массив
       data = temp;   //Присваиваем указателю адрес нового массива
        i++;
    }
};
Зря вы только размер массива назвали i, оно обычно используется как счетчик циклов. Используйте лучше что-то вроде size, sz, arr_sz, N. И выводить нужно не массив (указатель), а элемент массива:
C++
1
cour << One.data[0];
0
4295 / 1417 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
08.06.2013, 18:35 3
data - указатель, не выделив память, Вы пытаетесь записать какие-то данные по нужному адресу. Оттого и ошибка.
Так будет правильней:
C++
1
2
3
4
ARR(): data(new int[10]), i() {}
    ~ARR(){delete[] data;};
...
One.data[0] // подозреваю, что data - это динамический массив, тогда вызов такой
Добавлено через 26 секунд

Не по теме:

опоздал)

0
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
08.06.2013, 18:57  [ТС] 4
спасибо, ребята
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2013, 18:57

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Простая программка(база данных-поиск студентов)
Доброго времени суток. Товарищи помогите доделать программку. Не получается изменить название...

АРМ любая простая программка для курсовой
нужен АРМ любая простая программка для курсовой

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два...

Простая задачка, но туплю, помогите найти ошибку с new.
Написано в C++ Builder 6, для решения конкретного уравнения. Вводить число 0.3. Выдаёт ошибку в...


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

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

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