Задача. Написать программу, которая осуществляет добавление строки или столбца в любое место двумерной матрицы по выбору пользователя.
Решение с использованием языка CPP:
/* * File: hw_lessons15_1.cpp * Author: darkfire * * Created on October 6, 2010, 9:33 PM */ #include <stdlib.h> #include <iostream> /* Написать программу, которая осуществляет добавление строки или столбца в любое место двумерной матрицы по выбору пользователя. */ /* вывести все в отдельные функции */ using namespace std; int main(int argc, char** argv) { int i, i2, j, j2; bool strnew; // Переменные для описания характеристик массивов. int m1 = 5, m2 = 6; int **pArr = new int*[m1]; for (i = 0; i < m1; i++) pArr[i] = new int[m2]; //заполнение нулями и показ на экран for (i = 0; i < m1; i++) { for (j = 0; j < m2; j++) { pArr[i][j]=5; cout<<pArr[i][j]<<"\t"; } cout<<"\n"; } //пользовательский ввод int rc, pos; cout<<"Enter 0 -row or 1 -column:"; cin>>rc; cout<<"Enter position:"; cin>>pos; //функция добавления столбца //1 -нужно создать новый массив с кол-вом столбов на единицу больше m2+1 //2 -скопировать данные из первого массива и в новый столбец добавить единицы if (rc == 1) { int **pArrNew = new int*[m1]; for (i = 0; i < m1; i++) pArrNew[i] = new int[m2+1]; for (i=0,i2=0; i < m1; i++,i2++) { for (j=0,j2=0; j2<m2+1; j++,j2++) {pArrNew[i2][j2]=pArr[i][j]; if (j == pos) { for (int k=0;k<m1;k++) pArrNew[k][pos]=1; j--; }else pArrNew[i2][j2]=pArr[i][j]; } } //вывод на экран нового массива for (i = 0; i < m1; i++) { for (j = 0; j < m2+1; j++) { cout<<pArrNew[i][j]<<"\t"; } cout<<"\n"; } //Последовательное уничтожение двумерного массива for (i = 0; i < m1; i++) delete[]pArrNew[i]; delete[]pArrNew; } //функция добавления строки //1 -нужно создать новый массив с кол-вом строк на единицу больше m1+1 //2 -скопировать данные из первого массива и в новую строку добавить единицы if (rc == 0) { int **pArrNew = new int*[m1+1]; for (i = 0; i < m1+1; i++) pArrNew[i] = new int[m2]; //копируем, заполняем новый массив данными for (i=0,i2=0; i < m1; i++,i2++) { for (j=0,j2=0; j2<m2+1; j++,j2++) { if (i==pos && strnew) { for (int k=0;k<m1+1;k++) pArrNew[pos][k]=1; cout<<"i= "<<i<<"\n"; cout<<"j= "<<j<<"\n"; strnew=false; i--; break; }else pArrNew[i2][j2]=pArr[i][j]; } } //вывод на экран нового массива for (i = 0; i < m1+1; i++) { for (j = 0; j < m2; j++) { cout<<pArrNew[i][j]<<"\t"; } cout<<"\n"; } //Последовательное уничтожение двумерного массива for (i = 0; i < m1; i++) delete[]pArrNew[i]; delete[]pArrNew; } //Последовательное уничтожение двумерного массива for (i = 0; i < m1; i++) delete[]pArr[i]; delete[]pArr; return (EXIT_SUCCESS); }