Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с с++

Мирослав Вихляев Ученик (79), открыт 13 часов назад
3 ответа
Ivan Zhulanov Знаток (288) 13 часов назад
1/2 на 1/4 через квадратичную функцию
Алексей Антонов Ученик (201) 13 часов назад
Короче делаешь цикл, в него вложенный цикл
Во вложенном цикле считаешь сумму нужных чисел и максимальный элемент строки
Во внешнем цикле считаешь максимальный элемент из максимальных элементов строки
Николай Веселуха Высший разум (377956) 12 часов назад
 #include <iostream>
#include <limits>
#include <random>
#include <vector>

using namespace std;

class Matrix {
size_t n;
vector<vector<int>> matrix;
friend ostream& operator<<(ostream& out, const Matrix& mx) {
for (const auto& row : mx.matrix) {
for (auto value : row) out << value << ' ';
out.put('\n');
}
return out;
}
public:
using result_t = pair<int, long long>;
explicit Matrix(const size_t n)
: n(n), matrix(n, vector<int>(n)) {}
void fill_random(int l, int r) {
if (r < l) swap(l, r);
uniform_int_distribution uid(l, r);
mt19937 gen{ random_device()() };
for (auto& row : matrix) {
for (auto& value : row) value = uid(gen);
}
}
result_t tr() const {
auto max = numeric_limits<int>::min();
auto sum = 0LL;
for (size_t i = 0; i < n; ++i) {
for (size_t j = i; j < n; ++j) {
if (max < matrix[i][j]) max = matrix[i][j];
sum += matrix[i][j];
}
}
return { max, sum };
}
result_t bl() const {
auto max = numeric_limits<int>::min();
auto sum = 0LL;
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j <= i; ++j) {
if (max < matrix[i][j]) max = matrix[i][j];
sum += matrix[i][j];
}
}
return { max, sum };
}
result_t tl() const {
auto max = numeric_limits<int>::min();
auto sum = 0LL;
for (size_t i = 0; i < n; ++i) {
for (size_t j = 0; j < n - i; ++j) {
if (max < matrix[i][j]) max = matrix[i][j];
sum += matrix[i][j];
}
}
return { max, sum };
}
result_t br() const {
auto max = numeric_limits<int>::min();
auto sum = 0LL;
for (size_t i = 0; i < n; ++i) {
for (size_t j = n - 1 - i; j < n; ++j) {
if (max < matrix[i][j]) max = matrix[i][j];
sum += matrix[i][j];
}
}
return { max, sum };
}
};

void show_result(const char* prompt, const Matrix::result_t& result) {
const auto& [max, sum] = result;
cout << prompt << ". max: " << max << ", sum: " << sum << '\n';
}

int main() {
cout << "n: ";
size_t n;
cin >> n;
Matrix matrix(n);
matrix.fill_random(10, 99);
cout << matrix << '\n';
show_result("A", matrix.tr());
show_result("Б", matrix.bl());
show_result("И", matrix.tl());
show_result("К", matrix.br());
}
Похожие вопросы