Advertisement
Bertran_rz

Delete Row/Col

Oct 12th, 2021
686
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. using namespace std;
  4.  
  5.  
  6. void Create(int**& mass, int hight, int width)
  7. {
  8.     mass = new int* [hight];
  9.     for (int i = 0; i < hight; i++)
  10.         mass[i] = new int[width];
  11. }
  12.  
  13. void Delete(int** mass, int hight)
  14. {
  15.     for (int i = 0; i < hight; i++)
  16.         delete[] mass[i];
  17.     delete[] mass;
  18. }
  19.  
  20. void Fill(int** mass, int hight, int width)
  21. {
  22.     for (int i = 0; i < hight; i++)
  23.         for (int j = 0; j < width; j++)
  24.             mass[i][j] = rand() % 100;
  25. }
  26.  
  27. void Show(int** mass, int hight, int width)
  28. {
  29.     for (int i = 0; i < hight; i++)
  30.     {
  31.         for (int j = 0; j < width; j++)
  32.         {
  33.             cout << setw(2) << mass[i][j] << " ";
  34.         }
  35.         cout << "\n";
  36.     }
  37.     cout << "\n";
  38. }
  39.  
  40. //функция добавления последней строки в массив
  41. //получает указатель на массив (по ссылке), высоту (по ссылке), ширину
  42. void AddLastRow(int**& mass, int& hight, int width)
  43. {
  44.     int** temp = nullptr;//создаем новый указатель на массив указателей
  45.     Create(temp, hight + 1, width);//выделяем память под новый массив размером
  46.     //+1 строка
  47.     for (int i = 0; i < hight; i++)//в цикле перебираем все элементы
  48.         for (int j = 0; j < width; j++)
  49.             temp[i][j] = mass[i][j];//копируем из старого массива в новый
  50.     Delete(mass, hight);//удаляем старый массив
  51.     mass = temp;//записываем в указатель адрес нового массива
  52.     for (int i = 0; i < width; i++)//в цикле
  53.         mass[hight][i] = 0;//заполняем последнюю строку ноликами
  54.     hight++;//изменяем высоту на +1
  55. }
  56.  
  57. //функция добавления последнего столбца в массив
  58. //получает указатель на массив (по ссылке), высоту и ширину (по ссылке)
  59. void AddLastCol(int**& mass, int hight, int& width)
  60. {
  61.     int** temp = nullptr;//указатель
  62.     Create(temp, hight, width + 1);//выделили памяти на 1 столбец больше
  63.     //привязали его к указателю
  64.     for (int i = 0; i < hight; i++)//в цикле перебрали все элементы массива
  65.         for (int j = 0; j < width; j++)
  66.             temp[i][j] = mass[i][j];//скопировали в новый массив
  67.     Delete(mass, hight);//удалили старый массив
  68.     mass = temp;//в указатель записали адрес нового массива
  69.     for (int i = 0; i < hight; i++)//в цикле заполнили последнюю строку
  70.         mass[i][width] = 0;
  71.     width++;//ширина + 1
  72. }
  73.  
  74. void DeleteLastRow(int**& mass, int& hight, int width)
  75. {
  76.     int** temp = nullptr;
  77.     Create(temp, hight, width);
  78.     for (int i = 0; i < hight - 1; i++)
  79.         for (int j = 0; j < width; j++)
  80.             temp[i][j] = mass[i][j];
  81.     Delete(mass, hight);
  82.     mass = temp;
  83.     hight--;
  84. }
  85.  
  86. void DeleteLastCol(int**& mass, int hight, int& width)
  87. {
  88.     int** temp = nullptr;
  89.     Create(temp, hight, width);
  90.     for (int i = 0; i < hight; i++)
  91.         for (int j = 0; j < width-1; j++)
  92.             temp[i][j] = mass[i][j];
  93.  
  94.     Delete(mass, hight);
  95.     mass = temp;
  96.     width--;
  97. }
  98.  
  99.  
  100.  
  101. int main()
  102. {
  103.     srand(time(0));
  104.     int hight, width, choice, index;
  105.     bool job = 1;
  106.     int** mass = nullptr;
  107.     cout << "Enter hight\n"; cin >> hight;
  108.     cout << "Enter width\n"; cin >> width;
  109.     //mass = Create(hight, width);//альтернативный вариант
  110.     Create(mass, hight, width);
  111.     Fill(mass, hight, width);
  112.     while (job)
  113.     {
  114.         cout << "Enter your choice\n1-Show\n2-Add Last Row\n3-Add Last Col\n4-Delete Last Row\n5-Delete Last Col\n";
  115.         cout << "0-Exit\n";
  116.         cin >> choice;
  117.         switch (choice)
  118.         {
  119.         case 1: Show(mass, hight, width); break;
  120.         case 2: AddLastRow(mass, hight, width); break;
  121.         case 3: AddLastCol(mass, hight, width); break;
  122.         case 4: DeleteLastRow(mass, hight, width); break;
  123.         case 5: DeleteLastCol(mass, hight, width); break;
  124.         case 0: job = 0; break;
  125.         default:cout << "Wrong choice\n"; break;
  126.         }
  127.     }
  128. }
  129.  
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement