Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
профорг поясняет.doc
Скачиваний:
4
Добавлен:
14.08.2019
Размер:
752.13 Кб
Скачать
    1. Результат работы программы

Рис 13. Результат работы программы 9

11. Лабораторная работа №10 «Динамические массивы»

11. 1 Постановка задачи

Сформировать двумерный массив. Удалить из него строку и столбец с заданным номером.

  1. 2 Программа решения задачи

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#pragma hdrstop

//10. Сформировать двумерный массив. Удалить из него стро-ку и столбец с заданным номером.

#pragma argsused

char bufRus[256];

char* Rus(const char* text)

{

CharToOem(text, bufRus);

return bufRus;

}

void show(int**,int,int); // Функция вывода матрицы

void delstr(int**,int,int,int,int); // Функция для удаления строки

int main(int argc, char* argv[])

{

int strok,stolb,num,num1;

int **matr;

cout<<Rus("Введите размерность массива: ") << endl;

cout<<Rus(" количество строк: ");

cin>>strok;

cout<<Rus(" количество столбцов: ");

cin>>stolb;

matr=new int*[strok];

for(int i=0;i<strok;i++)

{

matr[i]=new int[stolb];

for(int j=0;j<stolb;j++)

matr[i][j]=random(10);

}

show(matr,strok,stolb); //выводим массив

cout<<endl <<Rus("Введите номер строки, которую нужно удалить: ");

cin>>num;

cout<<endl<<Rus("Введите номер столбца, который нужно удалить: ");

cin>>num1;

delstr(matr,num,num1,strok,stolb);

//удаляем дин. массив

for(int i=0;i<strok;i++)

delete matr[i];

delete [] matr;

getch();

return 0;

}

//функция вывода массива на экран

void show(int** matr,int strok,int stolb)

{

for(int i=0;i<strok;i++)

{

for(int k=0;k<stolb;k++)

cout<<matr[i][k]<<" ";

cout<<endl;

}

}

//функция для удаления строки и столбца

void delstr(int** matr,int num,int num1,int strok,int stolb)

{

strok--; //корректируем размер нового массива

int **matr2; //создаем новый промежуточный массив для удаления строки

matr2=new int*[strok];

for(int i=0;i<strok;i++)

{

matr2[i]=new int[stolb];

for(int j=0;j<stolb;j++)

{

if(i<(num-1)) matr2[i][j]=matr[i][j]; //пока не дошли до удаляемой строки - копируем

if (i>=(num-1)) matr2[i][j]=matr[i+1][j]; //пропускаем ненужную строку

}

}

stolb--; //корректируем размер окончательного массива

int **matr3; //создаем новый,окончательный массив

matr3=new int*[strok];

for(int i=0;i<strok;i++)

{

matr3[i]=new int[stolb];

for(int j=0;j<stolb;j++)

{

if (j<(num1-1)) matr3[i][j]=matr2[i][j]; //пока не дошли до нужного столбца - копируем

if (j>=(num1-1)) matr3[i][j]=matr2[i][j+1]; //пропускаем ненужный столбец

}

}

cout<<endl;

show(matr3,strok,stolb); //печатаем массив

}