Нужна помощь с реализацией задачи на С++, как пишется она на паскале я понял, а вот перевести ее на С++ затрудняюсь, суть программы. Дан массив А[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]<<" ";
}
}
}
#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;
}
На С++ можно решать многими способами. Например класс 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;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
iconv всегда выдает ошибку EILSEQ с указанием на последний символ, что не так?
Представим что есть интерфейс к БД:
Как определить геолокацию пользователя? Как я понял это делается через
Необходимо построить line график на странице, который содержит в себе примерно миллион (+- 1000) точекЛучший вариант - изображать только часть...