profile
Размещено 5 лет назад по предмету Информатика от Daniyar23

Дан двумерный массив. Найти:
а) минимальную сумму элементов строки;
б) максимальную сумму элементов столбца.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    / PascalABC.NET 3.3, сборка 1573 от 04.11.2017
    // Внимание! Если программа не работает, обновите версию!

    1. Со вспомогательным массивом

    begin
      var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:');
      var a:=MatrRandom(n,m,-99,99);
      Writeln('*** Исходный массив ***'); a.Println(4);
      Writeln(4*a.ColCount*'-');
      var min:=integer.MaxValue;
      var b:array of integer;
      for var i:=1 to a.RowCount-1 do begin
        b:=a.Row(i); // строка в одномерном массиве
        var s:=b.Sum;
        if s<min then min:=s;
        end;
      var max:=integer.MinValue;
      for var j:=1 to a.ColCount-1 do begin
        b:=a.Col(j); // колонка в одномерном массиве
        var s:=b.Sum;
        if s>max then max:=s;
        end;
      Writeln('Минимальная сумма по строкам ',min);
      Writeln('Максимальная сумма по колонкам ',max);
    end.

    Пример
    Количество строк и столбцов в массиве: 5 8
    *** Исходный массив ***
     -89  16  35  74 -76  -3  -3 -25
      54 -24  12  13  63 -60   4  92
      74  82  12  12  -1  11 -29 -19
     -72 -79  -3 -22  71 -53  57 -30
      65 -25   2 -25  82 -73   4 -23
    --------------------------------
    Минимальная сумма по строкам -131
    Максимальная сумма по колонкам 139

    2. Без вспомогательного массива

    begin
      var (n,m):=ReadInteger2('Количество строк и столбцов в массиве:');
      var a:=MatrRandom(n,m,-99,99);
      Writeln('*** Исходный массив ***'); a.Println(4);
      Writeln(4*a.ColCount*'-');
      Writeln('Минимальная сумма по строкам ',
          a.Rows.Select(row->row.Sum).Min);
      Writeln('Максимальная сумма по колонкам ',
          a.Cols.Select(col->col.Sum).Max);
    end.

    Пример
    Количество строк и столбцов в массиве: 7 4
    *** Исходный массив ***
     -44  32 -66 -71
      56 -99  83  27
     -30  39 -65 -95
     -40   6  37  37
      75  23 -86  80
     -12  98 -65  28
      47 -85  25  -6
    ----------------
    Минимальная сумма по строкам -151
    Максимальная сумма по колонкам 52
  2. Ответ на вопрос
    Ответ на вопрос дан MaxLevs
    Кодяра ниже
    \\\\\\\\\\\\\\\
    #include <iostream>
    using namespace std;
    int minSumRow1(int ** const a, const int N, const int M) {
     int sum = 0;
     int *buff = new int[N];
     for (size_t i = 0; i < N; ++i) {
      buff[i] = 0;
      for (size_t j = 0; j < M; ++j)
       buff[i] += a[i][j];
     }
     sum = buff[0];
     for (size_t i = 1; i < N; ++i)
      if (sum > buff[i])
       sum = buff[i];
     return sum;
    }
    int minSumRow2(int ** const a, const int N, const int M) {
     int sum, buff;
     bool flag = true;
     for (size_t i = 0; i < N; ++i) {
      buff = 0;
      for (size_t j = 0; j < M; ++j)
       buff += a[i][j];
      if (flag || buff < sum) {
       flag = false; sum = buff;
      }
     }
     return sum;
    }
    int maxSumCol1(int ** const a, const int N, const int M) {
     int sum = 0;
     int *buff = new int[M];
     for (size_t j = 0; j < M; ++j) {
      buff[j] = 0;
      for (size_t i = 0; i < N; ++i)
       buff[j] += a[i][j];
     }
     sum = buff[0];
     for (size_t j = 1; j < M; ++j)
      if (sum < buff[j]) sum = buff[j];
     return sum;
    }
    int maxSumCol2(int ** const a, const int N, const int M) {
     int sum, buff;
     bool flag = true;
     for (size_t j = 0; j < M; ++j) {
      buff = 0;
      for (size_t i = 0; i < N; ++i)
       buff += a[i][j];
      if (flag || buff > sum) {
       flag = false;
       sum = buff;
      }
     }
     return sum;
    }
    int main() {
     setlocale(LC_ALL, "Russian");
     const size_t N = 5, M = 6;
     int **a = new int*[N];
     cout << "Массив" << endl;
     for (size_t i = 0; i < N; ++i){
      a[i] = new int[M];
      for (size_t j = 0; j < M; ++j){
       a[i][j] = 1 + rand() % 9;
       cout << a[i][j] << " ";
      }
      cout << endl;
     }
     cout << endl;

     cout << minSumRow1(a, N, M) << endl;
     cout << minSumRow2(a, N, M) << endl;

     cout << maxSumCol1(a, N, M) << endl;
     cout << maxSumCol2(a, N, M) << endl;
     system("pause");
     return 0;
    }
    \\\\\\\\\\\\\\\
    Кодяра выше
    1. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Может ли другой человек, работающия на С++, увидев Ваш код, за пару минут изменить его?
    2. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Нет, я не о том, работает она или нет. Я - о пригодности С++ для массового обучения рядовых школьников.
    3. Ответ на вопрос
      Ответ на вопрос дан MaxLevs
      Алгоритм прост. Если человек разбирается в C++, то проблем нет.
    4. Ответ на вопрос
      Ответ на вопрос дан Аккаунт удален
      Вы не ответили прямо, но между строк все понятно)))) Спасибо.
    5. Ответ на вопрос
      Ответ на вопрос дан MaxLevs
      Благодарим за обращение :D
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.