Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2022, 19:44   #1
jukiaa
 
Регистрация: 16.05.2022
Сообщений: 7
Радость Написать функцию, добавляющую столбец двумерного массива по указанному номеру.

Есть код, который добавляет столбец двумерного массива в конец:
void AddCol(int**& arr, int row, int& col)
{
int** temp = new int* [row];
for (int i = 0; i < row; i++)
{
temp[i] = new int[col + 1];
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
temp[i][j] = arr[i][j];
}
}
for (int i = 0; i < row; i++)
{
delete[]arr[i];
}
delete[]arr;
arr = temp;
for (int i = 0; i < row; i++)
{
arr[i][col] = 7;
}
col++;
}
Нужно переделать код под это задание: Написать функцию, добавляющую столбец двумерного массива по указанному номеру.
Буду благодарна за помощь!
jukiaa вне форума Ответить с цитированием
Старый 16.05.2022, 20:51   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Код:
if (n <= col) for (int i = 0; i < row; i++) {
  temp[i] = new int[col + 1];
  for (j = 0; j < n; j++) temp[i][j] = arr[i][j];
  temp[i][n] = ...; /* ... - значение для заполнения добавляемого столбца, уберите эту строку совсем и будет 0, или напишите 7 вместо ... и будет как у вас в примере */
  for (j = n; j < col; j++) temp[i][j + 1] = arr[i][j];
}
а это тогда совсем не нужно
Код:
for (int i = 0; i < row; i++)
{
temp[i] = new int[col + 1];
}
...
for (int i = 0; i < row; i++)
{
arr[i][col] = 7;
}
n - индекс добавляемого столбца в диапазоне [0 .. col]

Последний раз редактировалось macomics; 16.05.2022 в 22:05.
macomics вне форума Ответить с цитированием
Старый 16.05.2022, 21:33   #3
jukiaa
 
Регистрация: 16.05.2022
Сообщений: 7
По умолчанию

macomics, Это так должно выглфдеть? Что-то не работает
void AddColl(int**& arr, int row, int& col, int pos)
{
int** temp = new int* [row];
if (pos <= col)
{
for (int i = 0; i < row; i++)
{
temp[i] = new int[col + 1];
for (int j = 0; j < pos; j++)
{
temp[i][j] = arr[i][j];
}
temp[i][pos] = 7;
for (int j = pos + 1; j < col; j++)
{
temp[i][j] = arr[i][j - 1];
}
}
}
for (int i = 0; i < row; i++)
{
delete[]arr[i];
}
delete[]arr;
arr = temp;
col++;
}
jukiaa вне форума Ответить с цитированием
Старый 16.05.2022, 22:02   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

А можно узнать в чем проблема, или надо догадаться?
Код:
for (int j = pos; j < col; j++)
{
temp[i][j + 1] = arr[i][j];
}
так правильнее. см выше.

Последний раз редактировалось macomics; 16.05.2022 в 22:05.
macomics вне форума Ответить с цитированием
Старый 16.05.2022, 22:10   #5
jukiaa
 
Регистрация: 16.05.2022
Сообщений: 7
По умолчанию

macomics, Все работает. Спасибо!
jukiaa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача двумерного массива в функцию. Кот Баюн Общие вопросы C/C++ 4 06.07.2017 21:51
Передача двумерного массива в функцию Animaria Общие вопросы C/C++ 5 17.09.2014 01:50
Передача двумерного массива в функцию Negent Общие вопросы C/C++ 4 24.06.2014 00:46
Передача двумерного массива в функцию bajaka Visual C++ 9 27.11.2011 16:17
Удалить столбец двумерного массива вещественных чисел dolbi Помощь студентам 2 29.03.2008 06:30