Код | #include <iostream> #include <iomanip> #include <stdlib.h>
int ** insertRow( int ** arr, int & rows, int & cols, int pos ) { if ( pos < 0 || pos > rows ) { return arr; } int ** new_arr = new int*[ rows + 1 ]; for ( int i = 0; i < rows + 1; i++ ) { new_arr[ i ] = new int[ cols ]; if ( i == pos ) { for ( int j = 0; j < cols; j++ ) { new_arr[ i ][ j ] = rand() % 100; } } else if ( i < pos ) { for ( int j = 0; j < cols; j++ ) { new_arr[ i ][ j ] = arr[ i ][ j ]; } delete []arr[ i ]; } else { for ( int j = 0; j < cols; j++ ) { new_arr[ i ][ j ] = arr[ i - 1 ][ j ]; } delete []arr[ i - 1 ]; } } delete []arr; rows++; return new_arr; }
int ** insertCol( int ** arr, int & rows, int & cols, int pos ) { if ( pos < 0 || pos > cols ) { return arr; } int ** new_arr = new int*[ rows ]; for ( int i = 0; i < rows; i++ ) { new_arr[ i ] = new int[ cols + 1 ]; for ( int j = 0; j < cols + 1; j++ ) { if ( j == pos ) { new_arr[ i ][ j ] = rand() % 100; } else if ( j < pos ) { new_arr[ i ][ j ] = arr[ i ][ j ]; } else { new_arr[ i ][ j ] = arr[ i ][ j - 1 ]; } } delete []arr[ i ]; } delete []arr; cols++; return new_arr; }
int ** deleteRow( int ** arr, int & rows, int & cols, int pos ) { if ( pos < 0 || pos >= rows ) { return arr; } int ** new_arr = new int*[ rows - 1 ]; for ( int i = 0; i < rows - 1; i++ ) { new_arr[ i ] = new int[ cols ]; if ( i < pos ) { for ( int j = 0; j < cols; j++ ) { new_arr[ i ][ j ] = arr[ i ][ j ]; } } else { for ( int j = 0; j < cols; j++ ) { new_arr[ i ][ j ] = arr[ i + 1 ][ j ]; } } delete []arr[ i ]; } delete []arr[ rows - 1 ]; delete []arr; rows--; return new_arr; }
int ** deleteCol( int ** arr, int & rows, int & cols, int pos ) { if ( pos < 0 || pos >= cols ) { return arr; } int ** new_arr = new int*[ rows ]; for ( int i = 0; i < rows; i++ ) { new_arr[ i ] = new int[ cols - 1 ]; for ( int j = 0; j < cols - 1; j++ ) { if ( j < pos ) { new_arr[ i ][ j ] = arr[ i ][ j ]; } else { new_arr[ i ][ j ] = arr[ i ][ j + 1 ]; } } delete []arr[ i ]; } delete []arr; cols--; return new_arr; }
void printArray( int ** arr, int rows, int cols ) { for ( int i = 0; i < rows; i++ ) { for ( int j = 0; j < cols; j++ ) { std::cout << std::setw( 2 ) << arr[ i ][ j ] << " "; } std::cout << std::endl; } std::cout << "-----------------------------------" << std::endl; }
int main() { int rows = 10; int cols = 10; int ** arr = new int*[ rows ]; for ( int i = 0; i < rows; i++ ) { arr[ i ] = new int[ cols ]; for ( int j = 0; j < cols; j++ ) { arr[ i ][ j ] = rand() % 100; } } std::cout << "initial:" << std::endl; printArray( arr, rows, cols ); arr = insertRow( arr, rows, cols, 2 ); std::cout << "inserted row 2:" << std::endl; printArray( arr, rows, cols ); arr = insertCol( arr, rows, cols, 2 ); std::cout << "inserted col 2:" << std::endl; printArray( arr, rows, cols ); arr = deleteRow( arr, rows, cols, 2 ); std::cout << "deleted row 2:" << std::endl; printArray( arr, rows, cols ); arr = deleteCol( arr, rows, cols, 2 ); std::cout << "deleted col 2:" << std::endl; printArray( arr, rows, cols ); for ( int i = 0; i < rows; i++ ) { delete []arr[ i ]; } delete []arr; system( "pause" ); }
|
Цитата(Hqw33 @ 8.4.2012, 15:33 ) | Высота и длина массива вводятся с клавиатуры. |
Цитата(Hqw33 @ 8.4.2012, 15:33 ) | Добавьте меню, в котором пользователь может выбрать желаемую операцию. |
а это давай сам |