Основы программирования на С++ для начинающих

Задачи: Двумерные массивы C++

Чтобы приступить к решению задач, предложенных в этой статье, вам необходимо знать что такое двумерные (многомерные) массивы . Задачи расположены от простой к сложной. Так что, если вы новичок в программировании, начинайте с первой, чтобы лучше разобраться с остальными.

1. Объявить двумерный массив, заполнить целыми числами и показать на экран. 

2) Объявить двумерный массив и заполнить его построчно с клавиатуры. После заполнения – показать заполненную матрицу на экран и посчитать сумму элементов отдельно в каждом столбце и каждой строке.

3) Заполнить двумерный массив случайными  числами от 10  до 100. Посчитать сумму элементов отдельно в каждой строке и определить номер строки,  в которой эта сумма максимальна.

Ваши вопросы, которые возникли при решении задач, оставляйте в комментариях к этой статье.

115 thoughts on “Задачи: Двумерные массивы C++

  1. Задачу №3 можно решить используя лишь 1 цикл с вложенным, место трёх, как в ответе.

    1. Согласен, не стоит давать такие глупые решения задач новичкам, в том числе и мне. Нужно приучать людей с самого начала использовать меньше ненужных циклов, чтобы улучшить скорость выполнения программы..

      Вот нормальное решение 3-го задания: cpp.sh/9zvl

      1. Глупость написана (про “улучшить скорость выполнения программы”).

  2. 1. Попытался решить задачу №2, введя две константы:
    iLine на число строк
    iColumn на число столбцов
    то есть количество строк не совпадает с количеством столбцов. В результате после компиляции, выводится не верное значение суммы 3-го столбца. В чем моя ошибка?
    2. В примере решения задачи №2 в строке кода №35, я так понимаю вместо columnSum[rowNum]—— должно быть —–columnSum[columnNum] или я ошибаюсь?

    1. ИМХО, если количество строк не совпадает с количеством столбцов, то нужно создавать два отдельных цикла для подсчета сумы строк и столбцов.

    2. та же проблема была, вот такое выдумал.

      #include
      #include
      using namespace std;

      int main()

      {
      setlocale(LC_ALL, “rus”);
      const int strok = 2;
      const int stolb = 3;
      int array[strok][stolb] = {};
      int isumm[strok] = {};
      int isum[stolb] = {};
      int s(0), st(0);

      cout << "Заполните таблицу"<<endl;

      for (int s = 0; s < strok; s++)

      {
      for (int st = 0; st < stolb; st++)
      {
      cout << "Введите значение " << s + 1 << "-й стройки и " << st + 1 <> array[s][st];

      }
      cout << endl;
      }

      for (int s = 0; s < strok; s++)
      {
      for (int st = 0; st < stolb; st++)
      {
      cout <<setw(5)<< array[s][st];
      isumm[s]+= array[s][st];
      isum[st]+= array[s][st];
      }
      cout << endl;

      cout << endl;

      }
      for (int i = 0; i < strok; i++)
      {
      cout << i + 1 << "-ая строка cумма " << isumm[i] << " " << endl;

      }
      for (int i = 0; i < stolb; i++)
      {
      cout << i + 1 << "-ый столбец cумма " << isum[i] << " " << endl;
      }

      return 0;
      }

  3. А как заполнить прямоугольную матрицу состоящую только из нулей и единиц , имеющей N строк M столбцов

  4. Привет. Решил вторую задачу. все работает как надо. Потом зашел посмотреть решение. Там тоже все ок. НО. Не понимаю зачем записывать сумму всех строк и всех столбцов в массивы когда можно записать в переменные? Какой в этом смысл? Вот мое решение. Делал без всяких красивостей.

    #include
    using namespace std;

    int main()
    {
    int matrixSize = 3;

    int arr[matrixSize][matrixSize] = {};

    // Ввод двумерного массива с клавиатуры
    for(int i = 0; i < matrixSize; i++)
    {
    for(int j = 0; j > arr[i][j];
    }
    }

    // Вывод двумерного массива
    for(int i = 0; i < matrixSize; i++)
    {
    for(int j = 0; j < matrixSize; j++)
    {
    cout<<"\t"<<arr[i][j];
    }
    cout<<endl;
    }

    // Вычисление и вывод суммы строк
    for(int i = 0; i < matrixSize; i++)
    {
    int sum = 0;
    for(int j = 0; j < matrixSize; j++)
    {
    sum += arr[i][j];
    }
    cout<<endl<<sum;
    }

    cout<<endl<<endl;

    // вычисление и вывод суммы столбцов
    for(int i = 0; i < matrixSize; i++)
    {
    int sum = 0;
    for(int j = 0; j < matrixSize; j++)
    {
    sum += arr[j][i];
    }
    cout<<sum<<endl;
    }
    }

    1. #include
      using namespace std;

      int main()
      {
      int matrixSize = 3;

      int arr[matrixSize][matrixSize] = {};

      // Ввод двумерного массива с клавиатуры
      for(int i = 0; i < matrixSize; i++)
      {
      for(int j = 0; j > arr[i][j];
      }
      }

      // Вывод двумерного массива
      for(int i = 0; i < matrixSize; i++)
      {
      for(int j = 0; j < matrixSize; j++)
      {
      cout<<"\t"<<arr[i][j];
      }
      cout<<endl;
      }

      // Вычисление и вывод суммы строк
      for(int i = 0; i < matrixSize; i++)
      {
      int sum = 0;
      for(int j = 0; j < matrixSize; j++)
      {
      sum += arr[i][j];
      }
      cout<<endl<<sum;
      }

      cout<<endl<<endl;

      // вычисление и вывод суммы столбцов
      for(int i = 0; i < matrixSize; i++)
      {
      int sum = 0;
      for(int j = 0; j < matrixSize; j++)
      {
      sum += arr[j][i];
      }
      cout<<sum<<endl;
      }
      }

  5. Задан двумерный массив А из 5-и строк и 4-х столбцов. Составить программу, которая вычисляет значение произведения сумм строк.

  6. #include
    #include
    using namespace std;

    void main()
    {
    setlocale(LC_ALL, “ru”);
    srand(time(NULL));
    const int ROWS = 5;
    const int COLS = 4;
    int z = 0;
    int x = 0;
    int ms [ROWS][COLS]{};
    int ms2 [ROWS]{};
    for (int i = 0; i < ROWS; i++)
    {
    for (int j = 0; j z)
    {
    z = ms2[i];
    x = i;
    }
    }
    }
    for (int i = 0; i < ROWS; i++)
    {
    for (int j = 0; j < COLS; j++)
    {
    cout << ms[i][j] << "\t";
    }
    cout << "|" << "сумма " << i + 1 << " строки = " << ms2[i] << endl;
    }
    cout << "максимальное значение у " << x + 1 << " строки – " << z << endl;
    }

  7. задача №1:
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);

    const int RowCount = 3;
    const int ColumnCount = 4;

    int ourMatrix[RowCount][ColumnCount] = {};

    for (int rowNum = 0; rowNum < RowCount; rowNum++)
    {
    for (int columnNum = 0; columnNum < ColumnCount; columnNum++)
    {
    ourMatrix[rowNum][columnNum] = rowNum + columnNum;
    cout << ourMatrix[rowNum][columnNum] << " ";
    }
    cout << endl;
    }
    return 0;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *