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

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

Войти
Регистрация
Восстановить пароль
 
Анна :)
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 15
#1

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

07.06.2010, 08:29. Просмотров 376. Ответов 5
Метки нет (Все метки)

Если у меня есть 2 двумерных динамических массива один х1 размерностью m*n, а другой х2 размерностью m*(n+1), то что происходит с ними когда я пишу оператор присваивания x1 = x2; ?!
И еще вопрос: что такое потерянная ссылка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2010, 08:29     Динамические массивы
Посмотрите здесь:

Динамические массивы - C++
Сдраствуйте надо написать програму на тему Динамические массивы Написать программу, использованием динамических массивов, вводя размер...

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

Динамические массивы - C++
Суть задания такова. Создается динамический массив А, заполняется элементами. Затем создается массив B, куда записываются все элементы...

Динамические массивы - C++
Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. Удалить первый четный элемент и вывести...

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

Динамические массивы - C++
Здравствуйте. Задание следующее: Сформировать динамический одномерный массив, заполнить его случайными числами и вывести на печать. ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
07.06.2010, 08:52     Динамические массивы #2
Смотря как реализуете массивы.
Если так:

const int n = 5,
m = 5;
int array1[m][n], array2[m][n+1];

то при array1 = array2 должна произойти ошибка
Анна :)
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 15
07.06.2010, 09:03  [ТС]     Динамические массивы #3
Ну это да, но у меня массивы задаются так:
C++
1
2
3
4
5
6
7
8
9
int **x1 = new int * [m];
    for (int i=0;i<m;i++)
        temp[i] = new int [n];
 
int **x2 = new int * [m];
    for (int i=0;i<m;i++)
        temp[i] = new int [n+1];
// тут должна быть инициализация массивов числами, а потом:
x1 = x2;
Если так делать, то никаких ошибок не выходит, но что конкретно происходит в программе?
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
07.06.2010, 09:11     Динамические массивы #4
Цитата Сообщение от Анна :) Посмотреть сообщение
x1 = x2;
Тут Вы просто присвоете одному указателю значение другого. В итоге потеряете указатель на выделенную память x1.
С точки зрения компилятора все нормально.

Добавлено через 1 минуту
Код как то не запутанно написан.
Вы создаете массив указателей. А не массив с данными

Добавлено через 1 минуту
Код как то не запутанно написан.
Ссори думал одно написал другое. Сплю еще. Понедельник.

Добавлено через 44 секунды
Вам я так понимаю нужна работа с матрицами?
Анна :)
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 15
07.06.2010, 09:43  [ТС]     Динамические массивы #5
Да мне как раз и надо, чтоб значения массива х1 стали значениями из массива х2. Но надо ли мне перед тем как присвоить х1=х2, нужно ли сделать:
f
C++
1
2
3
for (int i=0; i<m; i++)
    delete x[i];
    delete x;
?
Ведь размерности массивов разные. Не будет ли там никаких проблем с памятью?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2010, 11:40     Динамические массивы
Еще ссылки по теме:

Динамические массивы - C++
Даны целое число n и последовательность действительных чисел r1, r2, ..., rn, среди которых заведомо есть как отрицательные, так и...

Динамические массивы - C++
Удалить из массива максимальный элемент. Остальные элементы сдвинуть влево (максимальные элемент может встречаться несколько раз) ...

динамические массивы - C++
Здравствуйте, Посмотрите ,пожалуйста,задачу! ...

Динамические массивы - C++
Объясните пожалуйста что такое динамические массивы. Это массивы с не константным количеством элементов? Если так, то как их объявлять?

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

Динамические массивы. - C++
Помогите пожалуйста сделать задачку. В ней должно быть меню, и использованы динамические массивы. В меню 3 пункта: 1. Преобразуйте...


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

Или воспользуйтесь поиском по форуму:
Sudoki
124 / 64 / 1
Регистрация: 19.04.2010
Сообщений: 196
07.06.2010, 11:40     Динамические массивы #6
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
//Это размерности массивов mxn1 и mxn2
const int m = 5,
             n1 = 5,
             n2 = 6;
 
int array1[m*n1], array2[m*n2];
 
#include <stdlib.h>
//Функция заполнения массива случайными числами
void InitArray(int *arr, int col, int row)
{
int i, j;
 
    for( i = 0;, i<col;i++)
         for(j=0;j<row;j++)
              arr[i*row+j] = rand();   
}
 
//Функция присваивает элементы первого массива второму
void CopyArray(int* arr1, int *arr2, //массивы
                     int col1, int row1, //параметры первого массива m и n
                     int col2, int row2) //параметры второго массива
{
int i1, j1;
int i2, j2;
 
     for (i1=0, i2 =0 ; i1<col1, i2<col2; i1++, i2++)
        for (j1=0, j2=0 ; j1<row1, j2<row2; j1++, j2++)
             arr1[i1*row1+j1] = arr2[i2*row2+j2];    
}
 
int main(int argc, char* arcv[])
{
   //Запоняем 1-й массив
   InitArray(array1, m, n1);
   //Запоняем второй
   InitArray(array2, m, n2);
   //Копирум array2 в array1
  CopyArray(array1, array2, m, n1, m, n2);
 
 return 0;
};
То что Вы хотите сделать скопировать содержимое одного массива в другой.

На этот счет почитайте любую книгу для начинающего С++ тама есть работа с массивами

Добавлено через 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
//Это размерности массивов mxn1 и mxn2
const int m = 5,
             n1 = 5,
             n2 = 6;
 
//int array1[m*n1], array2[m*n2];
int *array1, *array2;
 
#include <stdlib.h>
//Функция заполнения массива случайными числами
void InitArray(int *arr, int col, int row)
{
int i, j;
 
    for( i = 0;, i<col;i++)
         for(j=0;j<row;j++)
              arr[i*row+j] = rand();   
}
 
//Функция присваивает элементы первого массива второму
void CopyArray(int* arr1, int *arr2, //массивы
                     int col1, int row1, //параметры первого массива m и n
                     int col2, int row2) //параметры второго массива
{
int i1, j1;
int i2, j2;
 
     for (i1=0, i2 =0 ; i1<col1, i2<col2; i1++, i2++)
        for (j1=0, j2=0 ; j1<row1, j2<row2; j1++, j2++)
             arr1[i1*row1+j1] = arr2[i2*row2+j2];    
}
 
int main(int argc, char* arcv[])
{
 
   array1 = new int[m*n1];
   array2 = new int[m*n2];
 
   //Запоняем 1-й массив
   InitArray(array1, m, n1);
   //Запоняем второй
   InitArray(array2, m, n2);
   //Копирум array2 в array1
  CopyArray(array1, array2, m, n1, m, n2);
 
  delete [] array1;
  delete [] array2;
 
 return 0;
};
Это при динамическом выделении памяти под массивы
Yandex
Объявления
07.06.2010, 11:40     Динамические массивы
Ответ Создать тему
Опции темы

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