задачи и решения с++, практика программирования

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

Задачи: Двумерные массивы C++
4.6 (92%) 5 votes

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

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

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

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

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

Чтобы поддержать наш сайт — нажмите на копилку и выберите любой удобный для Вас способ.

Рассылка новых уроков по программированию:

Задачи: Двумерные массивы C++: 44 комментария

  1. ошибку нашел но не знаю как исправить проверял в отдельных случаях массив забивается мусором после строки «s[i] += a[i][j];» в цикле

  2. В общем разобрался. Программу я писал в visual studio, а там если не заполнить массив то в нем мусор хранится. А если заполнить массив нолями, а потом проделать то же самое получается то что и требуется

  3. #include
    #include
    #include
    #include
    #include
    using namespace std;

    int main ()
    {
    const int arr=3;
    int mas[arr][arr]={};
    int sum[arr]={};
    int maxi=0;
    srand(time(NULL));

    for (int i=0;i<arr;i++)
    {
    for(int j=0;j<arr;j++)
    {

    mas[i][j]=10+rand()%100;

    cout<<setw (10)<< mas[i][j]<<setw (10);

    }

    cout<<endl;

    }
    for (int i=0;i<arr;i++)
    {
    for(int j=0;j<arr;j++)
    {
    sum[i]+=mas[i][j];
    }
    cout<<setw (10)<<"summa stroki "<<i+1<<" | " <<sum[i]<<endl;

    }
    for (int i=1;isum[maxi])
    {
    maxi=i;
    }

    }

    cout<<maxi;
    return 0;
    }

  4. Не могу вывести сумму строк в 3-й задаче, заполненный массив показывает, а дальше как будто ни чего нет.Вот код:

    При чем и во второй задаче точно такая же проблема, сумма строк не выводится на экран, остальные команды задания не проверял пока что ,решил разобраться с этим

    1. В cout нельзя выводить целый массив (sumArray[i] ) одним оператором, а можно выводить только поэлементно.

      Двумерные массивы можно выводить (точно так же как и заполнять) только вложенными циклами.

      1. Но в решении 3-й задачи сумма строк выведена точно так же поэлементно через цикл по сути, или я что то не понимаю

      2. А как во второй задаче,в этом выражении rowSum[rowNum] += ourMatrix[rowNum][columnNum];
        columnSum[rowNum] += ourMatrix[columnNum][rowNum];добавляется сумма введенная,не пойму почему rowsum[rownum]например, знает,что в cout потом нужно выводить сумму трёх чисел (сумма строк)???

      1. Хоть убей, все равно не могу понять ,что не так=((ведь у меня он тоже одномерный

    2. Мне так надоели ваши комментарии, что скопировал точно с экрана и выполнил (Linux, компилятор GCC):

      1. Спасибо за Ваше терпение и за то, что пытались мне помочь, но оказывается ошибка была очень глупа, из-за моей не внимательности :

        Лишний знак ‘<'

    3. Хорошая ошибка … смешная. Потому что i << First — это совершенно допустимое выражение, дающее значением i сдвинутое влево на First двоичных позиций (т.е. i * 2^First).
      А 2-м параметром цикла for это значение сравнивается с 0 на равно / не равно (ложь/истина).
      ;-)

      1. Это не воспринимается как ошибка. При использовании инициализации с фигурными скобками, разрешается отбросить знак =
        Но лучше всё писать явно

    1. Потому что srand() — это начальная инициализация датчика случайных чисел, которая должна вызываться только 1 раз, в начале. А может и вообще не вызываться — тогда датчик инициализируется по умолчанию.

  5. Не могу найти ошибку.. задал кол-во строк и столбцов 10х10, а на экран выводиться 5х5.

    1. Уберите операторы (строки):

      Они у вас уже в теле циклов записаны.
      Вот вы и скачете через 1 элемент.

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

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>