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

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

Войти
Регистрация
Восстановить пароль
 
 
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
#1

Динамический массив - C++

18.02.2012, 20:34. Просмотров 823. Ответов 19
Метки нет (Все метки)

У меня есть динамический массив, как можно его заполнить заданными зараннее числами?

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
#include <iostream.h>
 
void main()
{
 
    int i,j;
 
    cout<<"Enter size of array: ";
    cin>>i;
    
 
    int **pm = new int* [i]; 
           for (int f = 0; f < i; f++)
                 pm[f] = new int [i];
 
    pm=NULL;//Я ведь так обнуляю все элементы массива???
        
 
    pm  = {16, 78, 99, 26, -29,  19, -52,  65, -88,  51,
    -79, -22,  32, -25, -62, -69, -42, -59, -75,  89,
    -87,  95, -22,  85, -49, -75,  76,  73, -59, -52,
    30,  49, -28, -48,   0,  57,  46, -85,   0, -18,
    -97, -21, -95,  64,  22, -12,  69, -84, -11, -71,
    -25,  47,  72,  43,  15, -44,  44,  61,  54,  74,
    88, -61,   0, -64, -83,  97,   0,  90,  15,  28,
    -54,  19,  73,  35, -67, -87,  85, -99, -70,  10,
    98,  58, -10, -29,  95,  62,  77,  89,  36, -32,
    78,  60, -79, -18,  30, -13, -34, -92,  61, -38}; // так не хочет заполнять
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2012, 20:34     Динамический массив
Посмотрите здесь:

Динамический массив - C++
Удалить элемент с заданным ключом из динамического массива

Динамический массив - C++
Помогите пожалуйста написать программу!!! Нужно для будущих авиаторов, не дайте умереть авиации)))) Написать программу, вводя размер...

Динамический массив - C++
Доброго времени суток! Помогите пожалуста. Нужно чтобы вместо else a=0; в 27 строке было удаления елемента... #include &lt;iostream&gt; ...

Динамический массив - C++
Здравствуйте, помогите пожалуйста сделать динамическую треугольную матрицу размером 10X10. Вот мой код, проблема в том, что он ее просто...

динамический массив - C++
Как записать и сравнить данные в динамическом массиве с неопределенным количеством элементов

Динамический массив - C++
Заполнить массив следующим образом: матрица n(n+1) 1 1 1 1 ... 1 1 1...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 20:36     Динамический массив #2
Цитата Сообщение от qwe12355 Посмотреть сообщение
pm=NULL;//Я ведь так обнуляю все элементы массива???
Нет. Теперь указатель, который раньше указывал на первый элемент, указывает на NULL.
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 21:03  [ТС]     Динамический массив #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
#include <iostream.h>
 
void main()
{
 
    int i;
 
    cout<<"Enter size of array: ";
    cin>>i;
    
 
    int **pm = new int* [i]; // äâå ñòðîêè Гў Г¬Г*Г±Г±ГЁГўГҐ
    for (int f = 0; f < i; f++)
        pm[f] = new int [i];
 
    for(int z=0;z<i;z++)
        for(int j=0;j<i;j++)
        {
            pm[z][j]=0;
            cout<<pm[z][j];
        }
 
}
Вот так обнуляю массив но при запуске выдаёт ошибку.

Вопрос снят, это я дурак.

Как заполнить?

Добавлено через 14 минут
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
#include <iostream.h>
 
void main()
{
 
    int i;
 
    cout<<"Enter size of array: ";
    cin>>i;
    
 
    int **pm = new int* [i]; // äâå ñòðîêè Гў Г¬Г*Г±Г±ГЁГўГҐ
    for (int f = 0; f < i; f++)
        pm[f] = new int [i];
 
    for(int z=0;z<i;z++)
        for(int j=0;j<i;j++)
        {
            pm[z][j]=0;
        }
 
    int k=0,m[] = {16, 78, 99, 26, -29,  19, -52,  65, -88,  51,
    -79, -22,  32, -25, -62, -69, -42, -59, -75,  89,
    -87,  95, -22,  85, -49, -75,  76,  73, -59, -52,
    30,  49, -28, -48,   0,  57,  46, -85,   0, -18,
    -97, -21, -95,  64,  22, -12,  69, -84, -11, -71,
    -25,  47,  72,  43,  15, -44,  44,  61,  54,  74,
    88, -61,   0, -64, -83,  97,   0,  90,  15,  28,
    -54,  19,  73,  35, -67, -87,  85, -99, -70,  10,
    98,  58, -10, -29,  95,  62,  77,  89,  36, -32,
    78,  60, -79, -18,  30, -13, -34, -92,  61, -38};
 
    for(int z2=0;z2<i;z2++)
    {
        for(int j2=0;j2<i;j2++)
        {
            pm[z2][j2]=m[k];
            cout<<pm[z2][j2]<<" ";
            k++;
        }
        cout<<endl;
    }
}
Вот заполнил но как сделать чтобы лишние элементы были равны 0?
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 21:05     Динамический массив #4
Цитата Сообщение от qwe12355 Посмотреть сообщение
Вот заполнил но как сделать чтобы лишние элементы были равны 0?
По идее они и будут равны нулю.

Что-то вы мудрено решаете, какое задание-то?
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 21:07  [ТС]     Динамический массив #5
нет не получиться. он как бы перебирает весь массив заполняя его и когда массив m заканчівается он продолжая заполнять берет от балды числа
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 21:11     Динамический массив #6
qwe12355, я не указал, что когда k выйдет за размер массива m, то будет либо сигфолт, либо рандомные чила. Я полагал, это подразумевается.
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 21:14  [ТС]     Динамический массив #7
Задание.

Выполните задание 2 лабораторной работы 1, но размерности двумерного массива спросите у пользователя, а память под двумерный массив захватите динамически. Причем размер двумерного массива может не совпадать с размером одномерного - продумайте поведение программы в этом случае (это не ошибка!).


вот предыдущее:

Двумерный массив 10 на 10. Вывести адреса всех элементов, лежащих на главной диагонали.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 21:23     Динамический массив #8
Цитата Сообщение от qwe12355 Посмотреть сообщение
но размерности двумерного массива спросите у пользователя, а память под двумерный массив захватите динамически. Причем размер двумерного массива может не совпадать с размером одномерного
Цитата Сообщение от qwe12355 Посмотреть сообщение
Двумерный массив 10 на 10. Вывести адреса всех элементов, лежащих на главной диагонали.
Нигде не увидел: о каком одномерном массиве идет речь?
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 21:23  [ТС]     Динамический массив #9
Хотелось бы лучше но вроде так работает.......
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
63
64
65
66
#include <iostream.h>
 
void main()
{
 
    int i;
 
    cout<<"Enter size of array: ";
    cin>>i;
    
 
    int **pm = new int* [i]; // äâå ñòðîêè Гў Г¬Г*Г±Г±ГЁГўГҐ
    for (int f = 0; f < i; f++)
        pm[f] = new int [i];
 
    for(int z=0;z<i;z++)
        for(int j=0;j<i;j++)
        {
            pm[z][j]=0;
        }
 
    int k=0,m[] = {16, 78, 99, 26, -29,  19, -52,  65, -88,  51,
    -79, -22,  32, -25, -62, -69, -42, -59, -75,  89,
    -87,  95, -22,  85, -49, -75,  76,  73, -59, -52,
    30,  49, -28, -48,   0,  57,  46, -85,   0, -18,
    -97, -21, -95,  64,  22, -12,  69, -84, -11, -71,
    -25,  47,  72,  43,  15, -44,  44,  61,  54,  74,
    88, -61,   0, -64, -83,  97,   0,  90,  15,  28,
    -54,  19,  73,  35, -67, -87,  85, -99, -70,  10,
    98,  58, -10, -29,  95,  62,  77,  89,  36, -32,
    78,  60, -79, -18,  30, -13, -34, -92,  61, -38};
 
    for(int z2=0;z2<i;z2++)
    {
        for(int j2=0;j2<i;j2++)
        {
            pm[z2][j2]=m[k];
            k++;
            if (k>99) break;
        }
        if (k>99) break;
    }
    
    for(int z3=0;z3<i;z3++)
    {
        for(int j3=0;j3<i;j3++)
        {
            cout<<pm[z3][j3]<<" ";
            
        }
        cout<<endl;
        
    }
 
 
    cout<<"Adresa: ";
 
    for(int z4=0;z4<i;z4++)
    {
    
        cout<<&pm[z4][z4]<<" ";
            
        cout<<endl;
        
    }
}
За неделю другую может как-нибудь улучшу. С другом посоветуюсь. break не хочется использовать

Массив в коде.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 21:33     Динамический массив #10
Попробуйте обнулять массив так
C++
1
pm[f] = new int [i] { };
Цитата Сообщение от qwe12355 Посмотреть сообщение
break не хочется использовать
Тогда в условии for отлавливайте.
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 21:36  [ТС]     Динамический массив #11
чет не могу придумать как это так организовать
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 21:43     Динамический массив #12
Вычисляйте размер через sizeof(arr) / sizeof(int), и проверяйте k.
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 22:15  [ТС]     Динамический массив #13
C++
1
2
3
4
5
6
    for(int i2=0;i2<(sizeof(m)/sizeof(int));i2++)
    {
        *(pm+i2)=&m[i2];
        cout<<**(pm+i2)<< " ";
        if (i2==i) cout<<endl;
    }
вот так хочу присваивать, но он выдаёт весь массив, и в конце программы ошибка вылетает

Добавлено через 2 минуты
но тут есть ошибка, я знаю, но не знаю где
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 22:19     Динамический массив #14
Цитата Сообщение от qwe12355 Посмотреть сообщение
*(pm+i2)=&m[i2];
Ошибка тут. Think more.

Добавлено через 1 минуту
Цитата Сообщение от qwe12355 Посмотреть сообщение
cout<<**(pm+i2)<< " ";
Ну и тут.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2012, 22:32     Динамический массив
Еще ссылки по теме:

Динамический массив - C++
помогите с задачей..я не понял её))мне на контрольную её задали..КАКОЕ ЧИСЛО ВСТРЕТИТСЯ В МАССИВЕ РАНЬШЕ МАКСИМАЛЬНОЕ ИЛИ МИНИМАЛЬНОЕ?

Динамический массив - C++
Разработать класс содержащий: - компоненты данные - методы: а) конструктор по умолчанию; б) конструктор с параметрами; в)...

Динамический массив - C++
Помогите решить задачу способом динамических массивов. Дана действительная матрица размера mxn, в которой не все элементы равны нулю....

динамический массив - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...


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

Или воспользуйтесь поиском по форуму:
qwe12355
7 / 7 / 0
Регистрация: 26.11.2011
Сообщений: 117
18.02.2012, 22:32  [ТС]     Динамический массив #15
если так, то только первая строка массива заполняется
C++
1
*pm=&m[0];
так выдаёт ошибку при вводе i
C++
1
2
3
4
5
6
for(int i2=0;i2<(sizeof(m)/sizeof(int));i2++)
    {
        **(pm+i2)=m[i2];
        cout<<**(pm+i2)<< " ";
        if (i2==i) cout<<endl;
    }
Добавлено через 8 минут
C++
1
cout<<**(pm+i2)<< " ";
а тут какая ошибка? это я для того чтобы просмотреть массив полученный написал
Yandex
Объявления
18.02.2012, 22:32     Динамический массив
Ответ Создать тему
Опции темы

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