Различия

Показаны различия между двумя версиями страницы.


reshenie_zadachi_5 [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Пример программы на С++ добавления строки или столбца двумерной матрицы ======
 +[[zadachi._olimpiady]]
  
 +**Задача**. Написать программу, которая осуществляет добавление строки или столбца в любое место двумерной матрицы по выбору пользователя.
 +
 +Решение с использованием языка CPP:<file cpp>
 +/* 
 + * File:   hw_lessons15_1.cpp
 + * Author: darkfire
 + *
 + * Created on October 6, 2010, 9:33 PM
 + */
 +
 +#include <stdlib.h>
 +#include <iostream>
 +
 +/* Написать программу, которая осуществляет добавление
 +строки или столбца в любое место двумерной матрицы
 +по выбору пользователя.
 +*/
 +
 +/*
 + вывести все в отдельные функции
 + */
 +using namespace std;
 +
 +int main(int argc, char** argv) {
 +  int i, i2, j, j2;
 +        bool strnew;
 +
 + // Переменные для описания характеристик массивов.
 + int m1 = 5, m2 = 6;
 +
 + int **pArr = new int*[m1];
 + for (i = 0; i < m1; i++)
 + pArr[i] = new int[m2];
 +
 +         //заполнение нулями и показ на экран
 + for (i = 0; i < m1; i++)
 +         {
 +             for (j = 0; j < m2; j++)
 +             {
 +              pArr[i][j]=5;
 +              cout<<pArr[i][j]<<"\t";
 +             }
 +             cout<<"\n";
 +
 +         }
 +         //пользовательский ввод
 +         int rc, pos;
 +         cout<<"Enter 0 -row or 1 -column:";
 + cin>>rc;
 + cout<<"Enter position:";
 + cin>>pos;
 +         //функция добавления столбца
 +         //1 -нужно создать новый массив с кол-вом столбов на единицу больше m2+1
 +         //2 -скопировать данные из первого массива и в новый столбец добавить единицы
 +         if (rc == 1)
 +         {
 +             int **pArrNew = new int*[m1];
 +             for (i = 0; i < m1; i++) pArrNew[i] = new int[m2+1];
 +
 +             for (i=0,i2=0; i < m1; i++,i2++)
 +             {
 +                 for (j=0,j2=0; j2<m2+1; j++,j2++)
 +                 {pArrNew[i2][j2]=pArr[i][j];
 +
 +                      if (j == pos)
 +                      {
 +                          for (int k=0;k<m1;k++) pArrNew[k][pos]=1;
 +                          j--;
 +                      
 +                     }else pArrNew[i2][j2]=pArr[i][j];
 +                 }
 +             }
 +             //вывод на экран нового массива
 +             for (i = 0; i < m1; i++)
 +             {
 +                 for (j = 0; j < m2+1; j++)
 +                 {
 +                     cout<<pArrNew[i][j]<<"\t";
 +                 }
 +                 cout<<"\n";
 +             }
 +             //Последовательное уничтожение двумерного массива
 +             for (i = 0; i < m1; i++) delete[]pArrNew[i];
 +             delete[]pArrNew;
 +         }
 +         //функция добавления строки
 +         //1 -нужно создать новый массив с кол-вом строк на единицу больше m1+1
 +         //2 -скопировать данные из первого массива и в новую строку добавить единицы
 +         if (rc == 0)
 +         {
 +             int **pArrNew = new int*[m1+1];
 +             for (i = 0; i < m1+1; i++) pArrNew[i] = new int[m2];
 +             //копируем, заполняем новый массив данными
 +             for (i=0,i2=0; i < m1; i++,i2++)
 +             {
 +                 for (j=0,j2=0; j2<m2+1; j++,j2++)
 +                 {
 +                     if (i==pos && strnew)
 +                      {
 +                          for (int k=0;k<m1+1;k++) pArrNew[pos][k]=1;
 +                                  cout<<"i= "<<i<<"\n";
 +                                  cout<<"j= "<<j<<"\n";
 +                                  
 +                                  strnew=false;
 +                                  i--;
 +                                  break;
 +
 +                     }else pArrNew[i2][j2]=pArr[i][j];
 +                 }
 +             }
 +             //вывод на экран нового массива
 +             for (i = 0; i < m1+1; i++)
 +             {
 +                 for (j = 0; j < m2; j++)
 +                 {
 +                     cout<<pArrNew[i][j]<<"\t";
 +                 }
 +                 cout<<"\n";
 +             }
 +             //Последовательное уничтожение двумерного массива
 +             for (i = 0; i < m1; i++) delete[]pArrNew[i];
 +             delete[]pArrNew;
 +         }
 +        
 +         //Последовательное уничтожение двумерного массива
 + for (i = 0; i < m1; i++)
 + delete[]pArr[i];
 + delete[]pArr;
 +
 +
 +    return (EXIT_SUCCESS);
 +}
 +</file>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!