Основи програмування на С ++ для початківців

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

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

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

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

3) Заповнити двовимірний масив випадковими числами від 10  до 100. Порахувати суму елементів окремо в кожному рядку і визначити номер рядка,  в якій ця сума максимальна.

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

115 думки про "Завдання: Двумерные массивы C

  1. У метанні молота змагається n спортcменов. Кожен з них зробив m кидків. Переможцем змагань оголошується той спортсмен, у якого максимальний найкращий результат за всіма кидкам. Таким образом, програма повинна знайти значення максимального елемента в даному масиві, а також його індекси (тобто номер спортсмена і номер спроби).
    Вхідні дані
    Програма отримує на вхід два числа n і m, є числом рядків і стовпців в масиві. Далі у вхідному потоці йде n рядків по m чисел, є елементами масиву.

    Вихідні дані
    Програма виводить значення максимального елемента, потім номер рядка і номер стовпця, в якому він зустрічається. Якщо в масиві кілька максимальних елементів, то потрібно вивести мінімальний номер рядка, в якій зустрічається такий елемент, а якщо в цьому рядку таких елементів декілька, то потрібно вивести мінімальний номер стовпця. Не забудьте, що всі рядки і стовпці нумеруються з 0.

    приклади
    вхідні дані
    3 3
    3 1 2
    1 3 4
    3 3 3
    вихідні дані
    4
    1 2

    1. І на що ви розраховуєте?
      Що хтось стане вирішувати за вас ваші домашні завдання поки ви будете широко гуляти?

      Так за таке задоволення гроші платять!

    2. #include “stdafx.h”
      #include
      #include
      #include
      #include // setw(відступ)

      using namespace std;

      int main() {

      setlocale(0, “”);
      srand(time(NULL));

      Const = INT розмір рядка 3;
      Const INT COLSIZE = 3;

      int arr[розмір рядка][COLSIZE] = {};
      // заповнення масиву з клавіатури
      /*
      for (int rowNum = 0; rowNum < розмір рядка; rowNum ) {
      for (INT colNum = 0; монета < COLSIZE; монета ++) {
      cout << "Пожалуйста, введіть вихідні значення масиву: ";
      cout << rowNum + 1 << "-я строка ";
      cout << монета + 1 <> arr[rowNum][монета];

      }
      }
      */
      // Заповнюємо масив випадковими числами
      for (int rowNum = 0; rowNum < розмір рядка; rowNum ) {
      cout << "Строка " << rowNum + 1 << ": ";
      for (INT colNum = 0; монета < COLSIZE; монета ++) {
      arr[rowNum][монета] = 1 + rand() % 9;
      cout << setw(2) << arr[rowNum][монета];
      }
      cout << endl;
      }
      // Знаходимо максимальне число, а якщо їх декілька то знаходимо найпершу рядок і стовпець, де воно зустрічається
      ІНТ рядок[розмір рядка]{};
      INT кол[COLSIZE]{};
      INT Темп = 0;
      INT TEMP1 = 0;

      for (INT R = 0; R < розмір рядка; г ++) {
      for (INT з = 0; c < COLSIZE; C ++) {
      if (сідло[0] < arr[c][R]) {
      сідло[0] = arr[c][R];
      Темп = г;
      TEMP1 = з;
      }
      ще з;
      }

      }
      cout << "Максимальное: " << сідло[0] << " COL: " << TEMP1 + 1 << " ROW: " << температура + 1 << endl;

      system("pause");
      return 0;
      };

    3. #include
      #include
      #include
      #include
      #include

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

      Int N, M;
      Printf (“Введіть кількість спортсменів: “);
      зсапЕ (“%d”, &N);
      Printf (“Введіть кількість спроб: “);
      зсапЕ (“%d”, &M);

      INT ** A = новий INT *[N];
      for (int count = 0; count < N; count )
      A[count] = new int [N];

      INT Nmax = 0, IMAX, Jmax;
      int i, j;
      Printf ("\nТаблица с результатами: \n");
      for (i = 0; i < N; i )
      {
      Printf ("Спортсмен №%d: ", + 1);
      for (J = 0; j < M; j )
      {
      A[i][j] = rand()%25 + 1;
      Printf ("%3d ", A[i][j]);

      if(Nmax ==[i][j])
      {
      if(i < IMAX && j < Jmax)
      Nmax = А[i][j];
      else
      Nmax != A[i][j];
      }

      if(Nmax < A[i][j])
      {
      Nmax = А[i][j];
      Imax = я;
      JMax = J;
      }
      }
      Printf ("\n");
      }
      Printf ("\nЛучший результат – %d у спорстмена №% d в спробі №% d!", Nmax, IMAX + 1, Jmax + 1);

      for (int count = 0; count < N; count )
      delete [] A[count];

      return 0;
      }

    4. int main()
      {
      setlocale(LC_ALL, “rus”);
      SetConsoleCP(1251);
      SetConsoleOutputCP(1251);
      srand(time(NULL));

      сопзЬ Int N = 5, м = 7;
      ІНТ М.М.[n][м]{}, макс = 0, г,s,R,S;
      for (int i = 0; i < n; i )
      {
      for (int j = 0; j < м; j )
      {
      М.М.[i][j] = 15 + rand() % 55;
      cout << М.М.[i][j] << "|";
      }
      cout << endl;

      }
      for (int i = 0; i < n; i )
      {
      for (int j = 0; J макс)
      {
      макс = ММ[i][j];
      г = я;
      s = J;
      }
      if (макс == ММ[i][j] && i != г && j != s)
      {
      cout << "Opapa! У нас 2 Pobeditelya!\n";
      R = я;
      S = J;
      cout << "Pobedu delyat uchastnik #" << R + 1 << " я uchastnik #" << R + 1 << " S rezultatom " << max << " м!\n Pozdravlyaem!";
      return 0;
      }

      }

      }

      cout << "Pobedil uchastnik #" << г + 1 << " s " << з + 1 << " poputki, S rezultatom " << max << " м!\n Pozdravlyaem!";

    5. #include
      #include
      using namespace std;

      int main()
      {
      srand(time(NULL));
      setlocale(LC_ALL, “Rus”);

      сопзЬ Int N = 10, M = 15;

      int arr[N][M], Minn = 999999, countmx = 0, макс = -1, digitsr, digitsl;

      BOOL прапор = брехня;

      for (int i = 0; i < N; i )
      {
      for (int j = 0; j < M; j )
      {
      arr[i][j] = rand() % 150;
      cout << "[" << i << "]" << "[" << j << "] = " << arr[i][j] << endl;
      if (arr[i][j] == макс)
      {
      countmx + = 1;
      if (!прапор)
      {
      за допомогою J =;
      прапор = істина;
      }
      if (J макс)
      {
      max = arr[i][j];
      digitsr = я;
      digitsl = J;
      }
      }
      }
      if (countmx != 0)
      cout << "Мин. номер шпальти = " << Minn;
      else
      {
      cout << "Максимальное значение элемента = " << max << endl;
      cout << "Номер строки = " << digitsr << endl;
      cout << "Номер столбца = " << digitsl;
      }
      return (0);
      }

      1. cout << "[" << i << "]" << "[" << j << "] = " << arr[i][j] << endl
        ^ Цього бути не повинно, я забув видалити

  2. Поясніть будь ласка!!! чому сума в шпальтах виводиться не правильно??

    #include
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);
    srand(time(NULL));
    const int RowCount = 10;
    int array[RowCount][RowCount] = {};
    ІНТ SumRow[RowCount] = {}, SumColumn[RowCount] = {};

    for (int i = 0; i < RowCount; i ) {

    for (int j = 0; j < RowCount; j ) {
    array[i][j] = Я * J;
    cout << setw(4) << array[i][j] << " ";
    SumRow[i] += масив[i][j];
    SumColumn[i] += масив[j][i];

    }
    cout << endl;
    }
    for (int i = 0; i < 10; i ) {
    cout << "Сумма в " << i + 1 << " рядку = " << SumRow[i] << " ";
    cout << "Сумма в " << i + 1 << " стовпці = " << SumColumn[i] << endl;
    }

    system("pause");
    return 0;
    }

    1. Строка “SumColumn[i] += масив[j][i];” складає ще незаповнені випадковими числами осередку масиву.

  3. Я не знаю, чи є актуальною ще тема. останній коммент дуже давній. Але мене цікавить те саме запитання, що в пред'ідущем коменті.
    рішення задачі 2 працює тільки з константою і тільки з трійкою. З іншими числами суми невірні. Хотілося б пояснень, якщо це можливо. І рішення з рандомних введенням і з введенням розміру масиву з клавіатури

    1. Завдання №2 з рандомних введенням.

      #include
      #include
      #include
      #include

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

      Int N, M, i, j;
      Printf (“Введите количество строк двумерного массива: “);
      зсапЕ (“%d”, &N);
      Printf (“Введите количество столбцов двумерного массива: “);
      зсапЕ (“%d”, &M);

      INT ** A = новий INT *[N];
      for (int count = 0; count < N; count )
      A[count] = new int [N];

      Printf ("\nИсходный двухмерный массив: \n");
      for (i = 0; i < N; i )
      {
      for (J = 0; j < N; j )
      {
      A[i][j] = rand()%99+ 1;
      Printf ("%4d ", A[i][j]);
      }
      Printf ("\n");
      }

      Printf ("\nСумма элементов по строкам\n");
      ІНТ суми;
      for (i = 0; i < N; i )
      {
      сунь = 0;
      for (J = 0; j < N; j )
      {
      сунь = А +[i][j];
      }
      Printf ("%d-я строка: %d \n", i, суми);
      }

      Printf ("\nСумма элементов по столбцам\n");
      ІНТ sumj;
      for (J = 0; j < N; j )
      {
      sumj = 0;
      for (i = 0; i < N; i )
      {
      sumj = А +[i][j];
      }
      Printf ("%d-й столбец: %d \n", j, sumj);
      }

      for (int count = 0; count < N; count )
      delete [] A[count];

      return 0;
      }

    2. Завдання №2 з введенням значень масиву з клавіатури

      #include
      INT N = Const 4;

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

      Int А[N][N];
      int i, j;

      Printf (“\nÇàïîëíèòå äâóìåðíûé ìàññèâ% дх% d ÷ ÷ èñëàìè ïîñòðî II,: \n”, N, N);
      for (i = 0; i < N; i )
      {
      for (J = 0; j < N; j )
      {
      Printf ("A[%d][%d] = ", i, j);
      зсапЕ ("%d", &A[i][j]);
      }
      }

      Printf ("\nÈñõîäíûé äâóìåðíûé ìàññèâ: \n");
      for (i = 0; i < N; i )
      {
      for (J = 0; j < N; j )
      {
      Printf ("%2d", A[i][j]);
      }
      Printf ("\n");
      }

      Printf ("\nÑóììà ýëåìåíòîâ ïî ñòðîêàì\n");
      ІНТ суми;
      for (i = 0; i < N; i )
      {
      сунь = 0;
      for (J = 0; j < N; j )
      {
      сунь = А +[i][j];
      }
      Printf ("%d-ÿ ñòðîêà: %d \n", i, суми);
      }

      Printf ("\nÑóììà ýëåìåíòîâ ïî ñòîëáöàì\n");
      ІНТ sumj;
      for (J = 0; j < N; j )
      {
      sumj = 0;
      for (i = 0; i < N; i )
      {
      sumj = А +[i][j];
      }
      Printf ("%d-é ñòîëáåö: %d \n", j, sumj);
      }

      return 0;
      }

    1. ух, в Рандома зробив описку в циклах за стовпцями, фальсифікований
      int main ()
      {
      setlocale(LC_ALL, “rus”);
      srand(time(NULL));

      Int N, M, i, j;
      Printf (“Введите количество строк двумерного массива: “);
      зсапЕ (“%d”, &N);
      Printf (“Введите количество столбцов двумерного массива: “);
      зсапЕ (“%d”, &M);

      INT ** A = новий INT *[N];
      for (int count = 0; count < N; count )
      A[count] = new int [N];

      Printf ("\nИсходный двухмерный массив: \n");
      for (i = 0; i < N; i )
      {
      for (J = 0; j < M; j )
      {
      A[i][j] = rand()%99+ 1;
      Printf ("%4d ", A[i][j]);
      }
      Printf ("\n");
      }
      Printf ("\nСумма элементов по строкам\n");
      ІНТ суми;
      for (i = 0; i < N; i )
      {
      сунь = 0;
      for (J = 0; j < M; j )
      {
      сунь = А +[i][j];
      }
      Printf ("%d-я строка: %d \n", i, суми);
      }

      Printf ("\nСумма элементов по столбцам\n");
      ІНТ sumj;
      for (J = 0; j < N; j )
      {
      sumj = 0;
      for (i = 0; i < M; i )
      {
      sumj = А +[i][j];
      }
      Printf ("%d-й столбец: %d \n", j, sumj);
      }
      for (int count = 0; count < N; count )
      delete [] A[count];
      return 0;
      }

  4. ПОДСКАЖИТЕ ЛАСКА чому неправильно і як це виправити
    #include
    #include
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, “rus”);
    INT гвоздикове = 0;
    ІНТ Стовп = 0;

    INT більш[хід][stolb]={};
    ІНТ strokSUM = 0;
    ІНТ stolbSUM = 0;

    cout <> хід;
    cout <> stolb;
    cout << endl;
    cout << "==== Заполните матрицу " << хід << "x" << stolb << " ==== " << endl;
    cout << endl;

    for (INT I = 0; i<хід; i ){
    for (Int J = 0; j<stolb; j ){
    cout << + 1 << "-я строка ";
    cout << J + 1 <> але[хід][stolb];
    }
    cout << endl;
    }

    for (int i = 0; i < хід; i ){
    cout << " | ";
    for (int j = 0; j < stolb; j ){
    cout << setw(4) << але[i][j] << " ";
    Strokshun[i] +а =[i][j];
    stolbSUM[i] +а =[j][i];
    }
    cout << "|" << endl;
    }
    return 0;
    }

    1. INT гвоздикове = 0;
      ІНТ Стовп = 0;
      1. Рядки і колонки повинні мати константне значення.

      const int strok і const int stolb має бути.

      2. Як ти збираєшся створити масив?) у тебе 0 рядків і колонок.

  5. cout << "Строка, сумма элементов которой максимальна: " << numMaxRow + 1;
    Чому саме numMaxRow + 1 (то есть + 1)?
    без +1 некоректно працює, а з +1 нормально. Яку роль у цьому відіграє +1 ?

    1. коректно працює. У масиві нумерація елементів починається з 0.

      Тобто,. те, що ми вважаємо першим рядком в масиві має індекс 0. І для кращого сприйняття ми додаємо +1. Тобто,. на виході рядок з індексом 0 буде під номером 1 при відображенні в консолі.

      Начебто правильно і зрозуміло пояснив))

  6. #include
    using namespace std;
    int main() {
    int arr[100][100];
    Int N, м, макс = 0, STI, Conn;
    cin >> n >> м;
    for (int i = 0; i < n; i ) {
    for (int j = 0; j > arr[i][j];
    }
    }
    for (int i = 0; i < n; i ) {
    for (int j = 0; J макс) {
    max = arr[i][j];
    }
    STI = я + 1;
    Conn = J + 1;
    }
    }
    cout << "Max = " << max << endl << STI << " " << Conn;

    }

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *