Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/68: Рейтинг темы: голосов - 68, средняя оценка - 4.88
 Аватар для Borkot
4 / 4 / 2
Регистрация: 05.05.2012
Сообщений: 201
Записей в блоге: 1

В любое место матрицы добавить новый столбец/строку

09.08.2012, 22:22. Показов 13256. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Подскажите советом.
Задача такая:Есть матрица 2*2.Заполняется значениями.Нужно добавить либо столбец либо строку в любом месте матрицы.
Принцип решения знаю.Кроме одного,можно добавить строку||столбец с помощью оператора new, а потом если потребуется изменить указатели в массиве указателей.Или правильнее создать новый динамический массив уже больше на столбец либо строчку.заполняется а значения копируются со смещением индексов.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2012, 22:22
Ответы с готовыми решениями:

Добавить заполненную строку или столбец в любое место двумерной матрицы
Написать программу, которая осуществляет добавление заполненной строки или столбца в любое место двумерной матрицы по выбору пользователя....

Добавить новый столбец справа
Здравствуйте, В одном столбце у меня имеется список ФИО разделенных запятой. Но справа от этого столбца идут уже другие столбцы...

Как добавить новый столбец?
Как добавить столбец посещаемости по всем типам предметов для каждого тсудента, то есть "(количество занятий-копия...

2
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
10.08.2012, 14:17
Можно и так и так, но при первом варианте работы больше, поскольку при добавлении строки нужно вставить указатель на массив с элементами стоки матрицы, а при добавлении столбца нужно реаллокатить каждую строку матрицы. Я бы выбрал создание нового динамического массива, если это не запрещено условием. Так меньше писать.
1
 Аватар для Borkot
4 / 4 / 2
Регистрация: 05.05.2012
Сообщений: 201
Записей в блоге: 1
10.08.2012, 23:31  [ТС]
Лучший ответ Сообщение было отмечено Borkot как решение

Решение

Так и сделал, но встретил проблему,вроде несложная,но как прировнять значения в новь объявленную.Если у нас идет смещение скажем заполняю 0 столбец.
Вот начинания программы
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
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int r=2,OPr;
    int **pAxx=new int *[r]; //инициаизация массива указателей
    for(int i=0;i<r;i++)
       pAxx[i]=new int[r];    //Инициализация собственно массивов
    for(int j=0;j<r;j++)
        for(int k=0;k<r;k++)
            {cin>>pAxx[j][k];
            cout<<pAxx[j][k]<<endl;}
    
         cout<<"Введите что вы хотите вставить строчку или столбец 0-столбец 1-строчку";
         cin>>OPr;
         if(OPr<1)
         {
        int **pAxx2=new int*[r];  //создаем новый массив указателей
        for(int i=0;i<(++r);i++)
            pAxx2[i]=new int[r];    //создаем 3и столбца
        cout<<"Введите место куда вставим наши данные 1 2 3";
         cin>>OPr; //вводим переменную
         --OPr;//Уменьшаем на 1 так как в массиве адрес начинается с 0
         for(int j=0;j<r;j++)
        for(int k=0;k<r;k++)
        {
            if(OPr==k)
            pAxx2[j][k]=pAxx[j][k];//Вот здесь возникла проблема
        }
         }
        else
        {
            int **pAxx2=new int*[(++r)];
        for(int i=0;i<(--r);i++)
            pAxx2[i]=new int[r];
        }
        return 0;
}
И не могу получить доступ ко все элементам если на самом деле это одномерный массив,то почему тогда я не могу **(pAxx++) значение если на самом деле он одномерный.А прыгает только на следующий элемент pAxx[i][0]

Добавлено через 1 минуту
Не судите если покажется вам извращением.Может можно как-то проще.

Добавлено через 3 часа 19 минут
все я догодался как можно сделать:
нам же никто не мешает
C++
1
2
3
4
5
6
 for(int j=0,m=0;j<r;j++,m++)
        for(int k=0,t=0;k<r;k++,t++)
        {
            if(OPr==k)
            pAxx2[j][k]=pAxx[m][t];//вроде должно работать
        }
Добавлено через 1 час 24 минуты
Почти сделал,чуть чуть доработать для строк,и освободить память.
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
#include<iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    int r=2,OPr,f=3,s=1;
    int **pAxx=new int *[r]; //инициаизация массива указателей
    for(int i=0;i<r;i++)
       pAxx[i]=new int[r];    //Инициализация собственно массивов
    for(int j=0;j<r;j++)
        for(int k=0;k<r;k++)
            {cin>>pAxx[j][k];
            //cout<<pAxx[j][k]<<endl;
            }
    
         cout<<"Введите что вы хотите вставить строчку или столбец 0-столбец 1-строчку"<<endl;
         cin>>OPr;
         if(OPr<1)
         {
            
        int **pAxx2=new int*[r];  //создаем новый массив указателей 
        for(int i=0;i<r;i++)
            pAxx2[i]=new int[f];    //создаем 3и столбца
        cout<<"Введите место куда вставим наши данные 1 2 3"<<endl;
         cin>>OPr; //вводим переменную
         --OPr;//Уменьшаем на 1 так как в массиве адрес начинается с 0
         for(int j=0,m=0;j<r;j++,m++) //Записываем каждое значение
        for(int k=0,t=0;k<f;k++,t++)
            {
            if(OPr==k)
                {
                cout<<"Введите значение"<<endl;
                cin>>pAxx2[j][k];
                t--;
                }
            else
                {
                pAxx2[j][k]=pAxx[m][t];
 
                }
            }
        cout<<"\n\n";
        for(int j=0;j<r;j++)
            {for(int k=0;k<f;k++)
                {cout<<pAxx2[j][k]<<'\t';}
             cout<<'\n';
            }
         }
        else
        {
        
        }
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.08.2012, 23:31
Помогаю со студенческими работами здесь

Как добавить новый столбец к этой таблице?
всем привет облазил весь интернет, но ничего дельного не нашел. Как добавить новый столбец к этой таблице, чтобы добавлялся через кнопку,...

DBGrid: добавить новый столбец и записать его в БД
Есть БД подключена через ADO, можно ли добавить новый столбец в ней и чтобы это записалась в Access (добавляет пользователь, а не...

Можно ли добавить новый столбец в txt файл?
Есть файл test.txt с данными разделенными табуляцией: количество строк заранее неизвестно и периодически меняется, нужно добавить еще...

Добавить в существующую таблицу новый столбец и заполнить данными
Здравствуйте. Подскажите, как к существующей таблице с введенными данными добавить новый столбец и заполнить его информацией? Таблица:...

Добавить в определенное место текстового файла строку
Имеется текстовый файл. Добавить в него строку из двенадцати черточек (————), разместив ее: • после пятой строки; • после последней...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru