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

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

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

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

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

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

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

115 thoughts on “Задачи: Двумерные массивы 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, “Russian”);

    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] += a[i][j];
    }
    }

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

    _getch();
    return 0;
    }

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

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