написать программу, которая удаляет последнюю строку и столбец из матрицы c++
Ответы
Відповідь:
С++ code:
#include <iostream>
#include <cstdlib>
#include <time.h>
void randarr(int **array,const int row,const int cols){
for(int i = 0; i < row; i++){
for(int j = 0; j < cols; j++){
array[i][j] = rand() % 20 + 1;
}
}
}
void printarr(int **array,const int row,const int cols){
for(int i = 0; i < row; i++){
for(int j = 0; j < cols; j++){
std::cout << array[i][j] << "\t";
}
std::cout << std::endl;
}
}
void delete_row_cols(int **array,int &row,int &cols){
row--;
cols--;
int **temp = new int *[row];
for (int i = 0; i < row; i++){
temp[i]=new int[cols];
}
for(int i = 0; i < row; i++){
for(int j = 0; j < cols; j++){
temp[i][j] = array[i][j];
}
}
for (int i = 0; i < cols; i++){
delete[]array[i];
}
delete[]array;
array = new int *[row];
for (int i = 0; i < row; i++){
array[i]=new int[cols];
}
for(int i = 0; i < row; i++){
for(int j = 0; j < cols ; j++){
array[i][j] = temp[i][j];
}
}
for (int i = 0; i < row; i++){
delete[]temp[i];
}
delete[]temp;
}
int main(){
int n,m;
std::cout << "Enter a number of rows: ";
std::cin >> n;
std::cout << "Enter a number of cols: ";
std::cin >> m;
int **arr = new int *[n];
for (int i = 0; i < n; i++){
arr[i]=new int[m];
}
randarr(arr,n,m);
printarr(arr,n,m);
std::cout << "Delete last row and cols" << std::endl;
delete_row_cols(arr,n,m);
printarr(arr,n,m);
for (int i = 0; i < n; i++){
delete[]arr[i];
}
delete[]arr;
return 0;
}
Пояснення: