60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
1

Создать динамический массив, заполнить его и вывести

01.10.2011, 20:57. Показов 7444. Ответов 13
Метки нет (Все метки)

Задача такая, создать динамический массив, заполнить его и вывести. Набросал код
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
#include <iostream>
using namespace std;
 
class boolArray {
 
    private:
        int size;
        bool **arr;
 
    public:
 
        boolArray(int size) {
            cout << "Now constructor is working.\n";
            arr = new bool * [size];
            for(int i = 0; i != size; i++)
                arr[i] = new bool;
        }
 
        ~boolArray(){cout << "Now destructor is working.\n";}
 
        void show () {
            for( int i = 0; i != size; i++)
                for( int j = 0; j !=0; j++)
                    cout << arr[i][j] <<"\n";
        }
        void fill () {
            for( int i = 0; i != size; i++)
                for( int j = 0; j !=0; j++) {
                    if( j % 2 == 0) arr[i][j] = 1;
                    else arr[i][j] = 0;
                }
        }
};
Повисает почему-то
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2011, 20:57
Ответы с готовыми решениями:

Создать динамический двумерный массив и заполнить его
Всем привет. Помогите пожалуйста реализовать код. ТЗ: Создать программу с динамическим двумерным...

Создать динамический массив и заполнить его элементы определёнными значениями
Здравствуйте! Подскажите пожалуйста в чём может крыться ошибка (суть задачи состоит в том, чтобы...

Как создать динамический трехмерный массив и заполнить его случайными значениями?
Я больше по Java, но сейчас надо сделать пару задачек по плюсам. Одна из них звучит как-то так: ...

Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать
Все привет!Прошу помочь,на примере этой задачи нужно сформировать динамический двумерный массив,...

13
Фрилансер
Эксперт С++
5844 / 1225 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
01.10.2011, 21:48 2
Главная функция где?
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
01.10.2011, 23:02 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Как я понял вы завели двумерный массив, но указали только одно значение size. Нужно второе. Пример:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int n,m;//определяем переменные для хранения количества элементов массива
printf("Enter n: "); //запрашиваем n - количество строк
scanf("%i",&n); //считываем n с консоли
printf("Enter m: "); //запрашиваем m
scanf("%i",&m); //считываем m с консоли
   //заводим динамический массив
int** mass = new int *[n];
 
for(int i=0; i<n; i++)
   mass[i] = new int [m];
int k = 1;
 
// присваиваем значения элементам массива 
for(int i=0; i<n; i++){
   for(int j=0; j<m; j++){
      mass[i][j]=k;
      k++;
   }
}
3
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 01:23 4
C++
1
2
3
arr = new bool * [size];
 for(int i = 0; i != size; i++)
 arr[i] = new bool;
По сути - это одномерный массив. В массиве указателей будет хранится указатели на один элемент, а не на массив.
Если вы не этого хотели, то правильно будет так:
C++
1
2
3
arr = new bool * [size];
 for(int i = 0; i != size; i++)
 arr[i] = new bool[ /*тут какой-то размер массива*/];
Так же в конструкторе вы забыли присвоить\инициализировать размер size. Переменная size, которую получает конструктор и элемент данная size класса - это две разных переменных. Они ни как между собой не связаны. И название переменной, получаемой конструктором, надо изменить, чтобы путаницы не было.
Цитата Сообщение от robert19 Посмотреть сообщение
Как я понял вы завели двумерный массив, но указали только одно значение size. Нужно второе.
То есть по вашему не может быть массива size*size?
1
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
02.10.2011, 02:51  [ТС] 5
Мэйн
C++
1
2
3
4
    boolArray a(5);
    a.fill();
    a.show();
    return 0;
Да, спасибо, массив действительно создавал одномерный, а нужно было двумерный.
Но если передавать в конструктор переменную не size, то в функции, например, вывода ее не будет видно, как быть?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 11:37 6
Вам надо сохранить значение, передаваемое конструктору, в элемент данную size.
C++
1
2
3
4
5
6
7
8
boolArray(int m_size) 
: size( m_size ) //инициализация size размером m_size
{
     cout << "Now constructor is working.\n";
     arr = new bool * [size];
     for(int i = 0; i != size; i++)
          arr[i] = new bool[ /*тут какой-то размер массива*/];
}
1
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
02.10.2011, 18:08  [ТС] 7
Все сделал, работает.

Дальше хочу сделать метод сравнения. Допустим хочу сравнивать по общей сумме элементов.
Но как передать в метод класса другой объект этого же класса?
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 18:43 8
Вот так:
прототип:
C++
1
bool /*название метода*/( const boolArray  & );
Определение метода:
C++
1
2
3
4
bool /*название метода*/( const boolArray  & /*имя объекта*/)
{
    /*сравнение*/
}
Добавлено через 1 минуту
Но лучше перегрузить операцию отношения ==, т.е. сделать так, чтобы можно было сравнивать два массива так:
C++
1
2
if( mas1 == mas 2)
     ....
Добавлено через 1 минуту
Для этого надо перегрузить операцию ==. Но это уже самостоятельно читайте в нормальной книге.
0
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
02.10.2011, 19:08  [ТС] 9
C++
1
2
3
4
boolArray:: compare ( const boolArray &b) {
        if (a.sum > b.sum)
            printf("A > B");
    };
Почему не хочет принимать?(
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 19:16 10
А где возвращаемое значение?
0
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
02.10.2011, 19:43  [ТС] 11
Я просто думаю метод лучше воид сделать и просто выводить, или 1 больше, или 2, или они равны.

Добавлено через 8 минут
Блин запутался в общем конкретно.
Нужно сделать метод сравнения в классе. Сравнивать нужно два объекта этого же класса. То есть сравнивать надо вызывая метод через объект (X.MethodName) и передать нужно в этот же метод ссылку на объект номер 2.
Вообще потерял идею и не знаю как реализовать
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 20:31 12
Цитата Сообщение от cetrael Посмотреть сообщение
Я просто думаю метод лучше воид сделать и просто выводить, или 1 больше, или 2, или они равны.
Так и напиши void.
Цитата Сообщение от cetrael Посмотреть сообщение
Нужно сделать метод сравнения в классе. Сравнивать нужно два объекта этого же класса. То есть сравнивать надо вызывая метод через объект (X.MethodName) и передать нужно в этот же метод ссылку на объект номер 2.
А то что я написал - это не одно и то же?
0
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
02.10.2011, 21:15  [ТС] 13
Я не пойму, мне нужно сделать a.sum() > b.sum, но это должно быть в самом А классе описано. Можешь показать на примере?)
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
02.10.2011, 22:23 14
C++
1
2
3
4
void boolArray:: compare ( const boolArray &b) {
                if (size > b.size)
                        printf("A > B");
        };
Вот и все
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2011, 22:23
Помогаю со студенческими работами здесь

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
3. Постановка задачи 1. Сформировать динамический одномерный массив, заполнить его случайными...

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
Помогите найти ошибку. Сформировать динамический одномерный массив, заполнить его случайными...

Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать
1. Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на...

Создать динамический 2-мерный массив, заполнить его случайным образом, сортировать столбцы по возрастанию их суммы
Создать динамический 2-мерный массив, заполнить его случайным образом, сортировать столбцы по...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru