#include <iostream>
// Function to delete a specific row from a dynamic 2D array
void deleteRow(int& array, int& numRows, int numCols, int rowIndex) {
// Check if rowIndex is valid
if (rowIndex < 0 || rowIndex >= numRows) {
std::cout << "Invalid row index." << std::endl;
return;
}
// Create a new array with one less row
int newArray = new int*[numRows - 1];
// Copy rows before the deleted row
for (int i = 0; i < rowIndex; ++i) {
newArray[i] = new int[numCols];
for (int j = 0; j < numCols; ++j) {
newArray[i][j] = array[i][j];
}
}
// Copy rows after the deleted row
for (int i = rowIndex + 1; i < numRows; ++i) {
newArray[i - 1] = new int[numCols];
for (int j = 0; j < numCols; ++j) {
newArray[i - 1][j] = array[i][j];
}
}
// Delete the old array and update the array pointer
for (int i = 0; i < numRows; ++i) {
delete[] array[i];
}
delete[] array;
array = newArray;
--numRows;
}
int main() {
// Example usage
int numRows = 3;
int numCols = 4;
// Create a dynamic 2D array
int myArray = new int*[numRows];
for (int i = 0; i < numRows; ++i) {
myArray[i] = new int[numCols];
}
// Populate the array (for example)
int value = 1;
for (int i = 0; i < numRows; ++i) {
for (int j = 0; j < numCols; ++j) {
myArray[i][j] = value++;
}
}
// Display the original array
std::cout << "Original Array:" << std::endl;
for (int i = 0; i < numRows; ++i) {
for (int j = 0; j < numCols; ++j) {
std::cout << myArray[i][j] << " ";
}
std::cout << std::endl;
}
// Delete a specific row (for example, row with index 1)
int rowIndexToDelete = 1;
deleteRow(myArray, numRows, numCols, rowIndexToDelete);
// Display the updated array
std::cout << "\nArray after deleting row " << rowIndexToDelete << ":" << std::endl;
for (int i = 0; i < numRows; ++i) {
for (int j = 0; j < numCols; ++j) {
std::cout << myArray[i][j] << " ";
}
std::cout << std::endl;
}
// Clean up memory
for (int i = 0; i < numRows; ++i) {
delete[] myArray[i];
}
delete[] myArray;
return 0;
}