Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

08.06.2013, 18:14. Просмотров 226. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 18:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простая программка (найти ошибку в коде) (C++):

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

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

Простая программа. Высчитать формулу. Нужно найти ошибку - C++
Помогите, пожалуйста, исправить ошибку в программе. Вроде задал всё верно, но с подсчётом перовой формулы выходит совсем не то, что на...

Найти сумму целых отрицательных чисел удовлетворяющих условию (найти и исправить ошибку в коде) - C++
#include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() { int y = 0; for(int i = -21; i &lt; -99; i+=3) ...

Найти ошибку в коде - C++
В книге Страуструпа есть задание. Сначала нужно создать пустой консольный проект в Visual Studio, затем включить туда файл исходного...

Найти ошибку в коде - C++
Помогите пожалуйста найти ошибку в коде: #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; int main() ...

3
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
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
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 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
hil400k
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
08.06.2013, 18:57  [ТС] #4
спасибо, ребята
0
08.06.2013, 18:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 18:57
Привет! Вот еще темы с ответами:

Найти ошибку в коде - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { setlocale(0,&quot;&quot;); // rus int...

найти ошибку в коде: - C++
Помогите найти ошибку в коде: #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;conio.h&gt; using namespace std; float y,y2,y3,y4; ...

Найти ошибку в коде - C++
Я нуб, всех тонкостей не знаю, тапками не кидайте. Вот код: int i = 0; if (i = 0) cout &lt;&lt; &quot;OK&quot;; else cout &lt;&lt; &quot;WTF???&quot;; ...

Найти ошибку в коде - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; int main() { int m, n, **a, i, j, s; cout&lt;&lt;&quot;vvedite kol-vo...


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

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

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