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

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

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

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

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

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

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

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

  1. ourMatrix[rowNum][columnNum] = 10 + rand() % 91;
    в третин задачі в першому циклі,якщо rand видасть наприклад 272 підставивши його я так розумію ми отримаємо число 100, але не більше нам потрібно до 99, або це не так працює ,Поясніть будь ласка?

  2. “Строка, сумма элементов которой максимальна: ”
    в цьому рядку може випадати нуль,якщо числа випадуть такі що функція if не разу не виконатися і numMaxRow залишиться нулем.

      1. в третин задачі в коді потрібно визначити номер рядка, в якій ця сума максимальна. може вийти так що видасть “Строка, сумма элементов которой максимальна: 0”,хоча там повинні бути числа від 1 до 7 за номером рядка.

  3. в цій частині логічна помилка я так зрозумів,якщо в першому рядку сума числі буде більше ніж в інших рядках,тоді умова if не виконатися жодного разу і numMaxRow залишиться нулем,а одиниця вийти взагалі ні як не може.
    for (int i = 1; i rowSum[numMaxRow])
    {
    numMaxRow = i + 1;
    }
    }

  4. я знайшов дуже грубої помилки в оригінальному коді. В останньому FOR:

    for (int i = 1; i < MatrixSize; i++) { if (rowSum[i] > rowSum[numMaxRow])
    {
    numMaxRow = i + 1;
    }
    }

    cout < < "Строка, сумма элементов которой максимальна: " << numMaxRow;

    numMaxrow = i + 1; неправильно так як змінюється рядок і коли йде черговий loop на перевірку. Порівняння йде з іншого рядком. тільки в cout в кінці піхвах додати << numMaxRow + 1;
    тобто оригінальний код потрібно поміняти на:

    for (int i = 1; i < MatrixSize; i++) { if (rowSum[i] > rowSum[numMaxRow])
    {
    numMaxRow = i;
    }
    }

    cout < < "Строка, сумма элементов которой максимальна: " << numMaxRow + 1;

  5. Хочеться показати мій варіант рішення 3 задачи. На мій погляд він виглядає простіше запропонованого вами ( побачивши у вас другий масив трохи здивувалася – навіщо він? )
    #include
    #include
    #include
    using namespace std;
    int main()
    {
    setlocale(LC_ALL,"rus");
    int array1[10][10];
    srand(time(NULL));
    cout << " двумерный массив" << endl;
    cout << endl;
    for ( int i=0; i<10; i++)
    {
    for ( int j=0; j<10; j++)
    {
    array1[i][j]=10+rand()%90;
    cout << array1[i][j] << " " << "|" << " ";
    }
    cout << endl;
    }
    int max(0), sum(0), a(0);
    for ( int i=0; i<10; i++)
    {
    sum=0;
    for ( int j=0; j<10; j++)
    {
    sum+=array1[i][j];
    }
    cout << " сумма " << i+1 << " ой строки = " << sum <max)
    {
    max=sum;
    a=i+1;
    }
    }
    cout << "максимальная сумма элементов в строке № " << a << " равна = " << max << endl;
    return 0;
    }

  6. Чому у мене виходять нулі?

    int main()
    {
    setlocale(LC_ALL, “Rus”);
    const int first = 3;
    const int second = 5;
    int myArr[first][second] = {};
    for(int i = 0; i < first; i )
    {
    for(int j = 0; j < second; j )
    {
    myArr[first][second] = i + j;
    cout << myArr[i][j] << " | ";
    }
    cout << endl << endl;
    }
    return 0;
    }

  7. Допоможіть, не розумію в чому справа. Всі значення масиву s забиваються сміттям.
    #include
    #include

    using namespace std;

    int main(){

    setlocale(LC_ALL, “російський”);

    int a[7][4], s[7];

    for (int i(0); i < 7; i ){
    for (INT J(0); j < 4; j ){
    a[i][j] = 10 + rand() % (100 – 10 + 1);
    s[i] += а[i][j];
    }
    }

    for (int i(0); i < 7; i )
    cout << s[i]<<"\t";

    _getch();
    return 0;
    }

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

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