Как найти минимальную сумму элементов строки

Нужна помощь с реализацией задачи на С++, как пишется она на паскале я понял, а вот перевести ее на С++ затрудняюсь, суть программы.
Дан массив А[3][3], заполняется рандомно. Найти строку, сумма элементов которой минимальна, и умножить на минимальную сумму каждый элемент матрицы.
Помогите, пожалуйста ее реализовать на с++, заранее благодарен. ТО как я его реализовал на С++

     #include <iostream>
#include <cstdlib>
using namespace std;
int main() {
  int s,t,min=100;
  int a[3][3];
  int x[3][3];
  for(int i=0; i<3; i++){
    s=0;
    for(int j=0; j<3; j++){

      a[i][j] = -100 + rand() % 100;
      cout<<a[i][j]<<" ";
      s=s+a[i][j];
      if(s<min){
        min=s;
        t=i;
      }

    }
  }
  cout<<"n";
  cout<<"Сумма: "<<s<<"n";
  cout<<"Min = "<<t<<"n";
  for(int i=0; i<3; i++){
    for(int j=0; j<3; j++){
      x[i][j]=a[i][j]*min;
      cout<<x[i][j]<<" ";
    }
  }
}

задан 5 июн 2018 в 8:39

Mr.Flatman's user avatar

Mr.FlatmanMr.Flatman

5614 золотых знака9 серебряных знаков22 бронзовых знака

12

#include <cstddef>
#include <random>
#include <ctime>
#include <limits>

int main()
{
    constexpr std::size_t m = 3;
    constexpr std::size_t n = 3;

    int a[m][n];

    std::default_random_engine dre(std::time(nullptr) );
    std::uniform_int_distribution<> uid(-10, 10);

    int min = std::numeric_limits<int>::max();
    int temp = 0;

    for (std::size_t i = 0; i < m; ++i)
    {
        for (std::size_t j = 0; j < n; ++j)
        {
            a[i][j] = uid(dre);
            temp += a[i][j];
        }

        if (temp < min)
            min = temp;

        temp = 0;
    }

    for (std::size_t i = 0; i < m; ++i)
        for (std::size_t j = 0; j < n; ++j)
            a[i][j] *= min;

    return 0;
}

ответ дан 5 июн 2018 в 10:13

Stanislav Petrov's user avatar

На С++ можно решать многими способами. Например класс valarray для таких задач очень удобно использовать. Но так как речь идет о С_ массивах, код становится более обьемным. Например:

#include <iostream>
#include <random>
#include <algorithm>
using namespace std;    
int main()
{        
    const int row = 3, column = 3;
    int array[row][column];
    random_device rd;
    mt19937 gen(rd());
    uniform_int_distribution<int> dist(-100, 100);
    int min{100 * column};
    // инициализация, расчет минимальной суммы и вывод массива 
    for (size_t i = 0; i < row; ++i) {
        for(size_t j = 0; j < column; ++j) {
            array[i][j] = dist(gen);
            cout <<array[i][j] <<' ';
        }
        int k = std::accumulate(array[i], &array[i][column], int());
        if(k < min) min = k;
        cout  << endl;
    }
    // умножим на min все элементы массива
    std::transform(array[0], &array[row][0], array[0], [&](int i) {return i * min;});
    // теперь взглянем на результат
    for (int i = 0; i < row; ++i) {
        cout << endl;
        for (int j = 0; j < column; ++j)
            cout << array[i][j] << ' ';
    }
    return 0;
}

ответ дан 5 июн 2018 в 13:26

AR Hovsepyan's user avatar

AR HovsepyanAR Hovsepyan

15.8k3 золотых знака13 серебряных знаков30 бронзовых знаков

yardie

9 / 9 / 2

Регистрация: 14.07.2010

Сообщений: 166

1

Найти строку с минимальной суммой элементов

26.10.2010, 15:01. Показов 4257. Ответов 1

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Найти строку с минимальной суммой элементов. Если таких строк несколько то нужн найти номер первой из них!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
using namespace std;
 
void main()
{
const int z = 3, y = 3; 
 
int a[z][y]; 
int i,j;
int s=0,n=0,k=0;
 
for(i = 0; i < z; i++)
{for( j = 0; j < y; j++)
cin >> a[i][j];}
 
 for(i = 0; i < z; i++) 
 {
for( j = 0; j < y; j++)
{
    if ((s+=a[i][j])>(s+=a[i+1][j]);
 
   cout << "Yahooo " <<s;    
}
}
 
cin.get();
cin.get();
}



0



dihlofos

Бродяга

314 / 268 / 56

Регистрация: 27.08.2010

Сообщений: 553

26.10.2010, 15:32

2

Если ничего не напутал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main()
{
const int ROWS = 5, COLS = 5;
int arr[ROWS][COLS];
int i, j, sum, min, num=0;
 
srand(time(NULL));
 
for(i=0; i<ROWS; ++i)
{
    for(j=0; j<COLS; ++j)
    {
        arr[i][j]=rand()%10;
        cout<<arr[i][j]<<' ';
    }
    cout<<'n';
}
 
for(i=0; i<ROWS; ++i)
{
    sum=0;
    for(j=0; j<COLS; ++j)
        sum+=arr[i][j];
    if(i==0||sum<min)
        {
            min=sum;
            num=i;
        }
}
 
cout<<"Minimal summa: "<<min
    <<". Nomer stroki: "<<num;
 
cin.get();
return 0;
}



1



Светило науки – 549480 ответов – 388270 раз оказано помощи

/ 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

Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи.
Внимание! При решении задач обязательно учтите Рекомендации по оформлению решений задач на двумерные массивы

Решены задачи 1. Не решены: 2-30.

Задачи

D4.1. Дан двумерный массив. Определить:
а) максимальное значение среди элементов третьего столбца массива;
б) минимальное значение среди элементов второй строки массива.
D4.2. Дан двумерный массив. Определить:
а) максимальное значение среди элементов пятой строки массива;
б) минимальное значение среди элементов четвертого столбца массива.
D4.3. Составить программу:
а) нахождения минимального значения среди элементов любой строки двумерного массива;
б) нахождения максимального значения среди элементов любого столбца
двумерного массива.
D4.4. Составить программу:
а) нахождения максимального значения среди элементов любой строки двумерного массива;
б) нахождения минимального значения среди элементов любого столбца двумерного массива.
D4.5. Дан двумерный массив. Определить:
а) номер столбца, в котором расположен минимальный элемент четвертой строки массива. Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них;
б) номер строки, в котором расположен максимальный элемент третьего столбца массива. Если элементов с максимальным значением в этом столбце несколько, то должен быть найден номер строки самого нижнего из них.
D4.6. Дан двумерный массив. Определить:
а) номер строки, в которой расположен максимальный элемент второго столбца массива. Если элементов с максимальным значением в этом столбце несколько, то должен быть найден номер строки самого верхнего из них;
б) номер столбца, в котором расположен минимальный элемент третьей строки массива. Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого правого из них.
D4.7. Составить программу:
а) нахождения номера строки, в которой расположен максимальный элемент любого столбца двумерного массива. Если элементов с максимальным значением в этом столбце несколько, то должен быть найден номер строки самого нижнего из них;
б) нахождения номера столбца, в котором расположен минимальный элемент любой строки двумерного массива. Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них.
D4.8. Составить программу:
а) нахождения номера столбца, в котором расположен максимальный элемент любой строки двумерного массива. Если элементов с максимальным значением в этой строке несколько, то должен быть найден номер столбца самого правого из них;
б) нахождения номера строки, в которой расположен минимальный элемент любого столбца двумерного массива. Если элементов с минимальным значением в этом столбце несколько, то должен быть найден номер строки самого нижнего из них.
D4.9. Дан двумерный массив. Определить:
а) максимальный элемент массива;
б) минимальный элемент массива;
в) координаты минимального элемента массива. Если элементов с минимальным значением несколько, то должны быть найдены координаты самого нижнего и самого правого из них;
г) координаты максимального элемента массива. Если элементов с максимальным значением несколько, то должны быть найдены координаты самого верхнего и самого левого из них.
Все задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.10. Дан двумерный массив. В каждой его строке найти:
а) максимальный элемент;
б) минимальный элемент;
в) координаты максимального элемента. Если элементов с максимальным значением в строке несколько, то должны быть найдены координаты самого левого из них;
г) координаты минимального элемента. Если элементов с минимальным значением в строке несколько, то должны быть найдены координаты самого правого из них.
Все задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.11. Дан двумерный массив. В каждом его столбце найти:
а) максимальный элемент;
б) минимальный элемент;
в) координаты максимального элемента. Если элементов с максимальным значением в столбце несколько, то должны быть найдены координаты самого нижнего из них;
г) координаты минимального элемента. Если элементов с минимальным значением в столбце несколько, то должны быть найдены координаты самого верхнего из них.
Все задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.12. Дан двумерный массив. Найти:
а) минимальную сумму элементов строки;
б) максимальную сумму элементов столбца.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.13. Дан двумерный массив. Найти:
а) максимальную сумму элементов строки;
б) минимальную сумму элементов столбца.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.14. В двумерном массиве хранится информация о количестве учеников в каждом из четырех классов каждой параллели школы с первой по одиннадцатую (в первой строке — информация о первых классах, во второй — вторых и т. д.). Найти:
а) численность самой большой (по количеству учащихся) параллели;
б) численность самой маленькой (по количеству учащихся) параллели.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.15. В двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первой строке — информация о баллах первого спортсмена, во второй — второго и т. д.). Общее число спортсменов равно 20. Определить:
а) сколько баллов набрал спортсмен-победитель соревнований;
б) сколько баллов набрал спортсмен, занявший последнее место.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.16. Дан двумерный массив. Найти:
а) строку с максимальной суммой элементов. Если таких строк несколько, должен быть найден номер самой нижней из них;
б) столбец с минимальной суммой элементов. Если таких столбцов несколько, должен быть найден номер самого левого из них.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.17. Дан двумерный массив. Найти:
а) строку с минимальной суммой элементов. Если таких строк несколько, должен быть найден номер самой верхней из них;
б) столбец с максимальной суммой элементов. Если таких столбцов несколько, должен быть найден номер самого правого из них.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.18. Информация о количестве жильцов в каждой из четырех квартир каждого этажа 12-этажного дома хранится в двумерном массиве (в первой строке — информация о квартирах первого этажа, во второй — второго и т. д.). Определить:
а) на каком этаже проживает меньше всего людей;
б) на каком этаже проживает больше всего людей.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.19. В зрительном зале 25 рядов, в каждом из которых по 36 мест (кресел). Информация о проданных билетах хранится в двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов — номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае — 0. Определить:
а) на какой ряд продано больше всего билетов;
б) на какой ряд продано меньше всего билетов.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.20. В двумерном массиве размером 17 17 записано количество очков, набранных той или иной командой во встречах с другими командами (3 — если данная команда выиграла игру, 0 — если проиграла, 1 — если игра закончилась вничью). Определить:
а) сколько очков набрала команда, ставшая чемпионом;
б) номер команды, занявшей последнее место.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.21. Для условий предыдущей задачи определить:
а) сколько очков набрала команда, занявшая последнее место;
б) номер команды, ставшей чемпионом.
Обе задачи решить двумя способами:
1) с использованием дополнительного одномерного массива;
2) без использования дополнительного одномерного массива.
D4.22. Дан двумерный массив из двух строк и двадцати столбцов. Найти максимальную сумму элементов в двух соседних столбцах.
D4.23. Дан двумерный массив из двух строк и пятнадцати столбцов. Найти минимальную сумму элементов в двух соседних столбцах.
D4.24. Дан двумерный массив из двадцати двух строк и двух столбцов. Найти максимальную сумму элементов в двух соседних строках.
D4.25. Дан двумерный массив из пятнадцати строк и двух столбцов. Найти минимальную сумму элементов в двух соседних строках.
D4.26. Дан двумерный массив из двух строк и двадцати столбцов. Найти номера двух соседних столбцов, сумма элементов в которых максимальна.
D4.27. Дан двумерный массив из двух строк и пятнадцати столбцов. Найти номера двух соседних столбцов, сумма элементов в которых минимальна.
D4.28. Дан двумерный массив из двадцати двух строк и двух столбцов. Найти номера двух соседних строк, сумма элементов в которых максимальна.
D4.29. Дан двумерный массив из пятнадцати строк и двух столбцов. Найти номера двух соседних строк, сумма элементов в которых минимальна.
D4.30. В Москве самыми теплыми являются дни с 15 июля по 15 августа. Для проведения музыкального фестиваля необходимо выбрать 7 следующих подряд
дней этого периода, которые были наиболее теплыми за последние 10 лет (данные каждого года о температуре воздуха в указанный период имеются).


NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.


Помощь проекту:

/ 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

    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

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