C/C++
Как написать код по этому заданию? Программирование на Си
Для заданного двумерного массива из n строк и m столбцов: Найти такие k, для которых среднее арифметическое k-ой строки массива совпадает со средним арифметическим k-ого столбца.
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <numeric>
using namespace std;
int main() {
uniform_int_distribution<> uid(1, 3);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
auto print = [](int x) { cout << setw(2) << x; };
const auto n = 25U, m = 25U;
int matrix[n][m];
for (auto& row : matrix) generate(row, row + m, rand);
for (const auto& row : matrix) {
for_each(row, row + m, print);
puts("");
}
puts("");
double rows[n];
for (auto i = 0U; i < n; ++i) rows[i] = accumulate(matrix[i], matrix[i] + m, 0) / double(m);
double cols[m];
for (auto j = 0U; j < m; ++j) {
auto sum = 0.;
for (auto i = 0U; i < n; ++i) sum += matrix[i][j];
cols[j] = sum / n;
}
auto x = n < m? n : m;
for (auto k = 0U; k < x; ++k) {
if (rows[k] == cols[k]) {
cout << setw(3) << k << '\n';
}
}
puts("");
system("pause");
}
#include <iostream>
#include <iomanip>
#include <random>
#include <numeric>
using namespace std;
int main() {
uniform_int_distribution<> uid(1, 3);
mt19937 gen{ random_device()() };
auto rand = [&] { return uid(gen); };
auto print = [](int x) { cout << setw(2) << x; };
const auto n = 25U, m = 25U;
int matrix[n][m];
for (auto& row : matrix) generate(row, row + m, rand);
for (const auto& row : matrix) {
for_each(row, row + m, print);
puts("");
}
puts("");
double rows[n];
for (auto i = 0U; i < n; ++i) rows[i] = accumulate(matrix[i], matrix[i] + m, 0) / double(m);
double cols[m];
for (auto j = 0U; j < m; ++j) {
auto sum = 0.;
for (auto i = 0U; i < n; ++i) sum += matrix[i][j];
cols[j] = sum / n;
}
auto x = n < m? n : m;
for (auto k = 0U; k < x; ++k) {
if (rows[k] == cols[k]) {
cout << setw(3) << k << '\n';
}
}
puts("");
system("pause");
}
Написать-то можно.
Это должна быть квадратная матрица с одинаковыми значениями как в k-том столбце, так и в k-той строке.
При случайном определении программой размерности столбцов и строк маловероятно нахождение значения k.
Какой смысл писать код?
Это должна быть квадратная матрица с одинаковыми значениями как в k-том столбце, так и в k-той строке.
При случайном определении программой размерности столбцов и строк маловероятно нахождение значения k.
Какой смысл писать код?
Геннадий Балыклов
Это не я придумала, у меня задание такое
Юрий Люкин
Евгений, полагаю, что Вы просто устали (я, кстати, тоже в последнее время чувствую себя уставшим, должно быть сказывается солнцедефицит).
Матрица n×m не обязана быть квадратной, просто в начале программы необходимо проверить условие k ≤ min(n,m).
Весьма занимательная задачка ...для математиков. {)
Матрица n×m не обязана быть квадратной, просто в начале программы необходимо проверить условие k ≤ min(n,m).
Весьма занимательная задачка ...для математиков. {)
Юрий Люкин
Ух, вот, что я не заметил сразу: первый цикл работает вхолостую (бесполезно), поскольку сразу после заголовка стоит точка с запятой!
for (int k = 0; k < min[n, m]; ++k);
Уберите точку с запятой и перенесите открывающую фигурную скобку!
for (int k = 0; k < min[n, m]; ++k)
{
r = c = 0;
for (int j = 0; j < m; r += array[k][j++]);
for (int j = 0; j < n; c += array[j++][k]);
if (r * n == c * m) {
printf("%d ", k); }
}
for (int k = 0; k < min[n, m]; ++k);
Уберите точку с запятой и перенесите открывающую фигурную скобку!
for (int k = 0; k < min[n, m]; ++k)
{
r = c = 0;
for (int j = 0; j < m; r += array[k][j++]);
for (int j = 0; j < n; c += array[j++][k]);
if (r * n == c * m) {
printf("%d ", k); }
}
Юрий Люкин
Пожалуйста, не жалейте слов на комментарии в коде программы — не придётся каждый раз разбираться в одном и том же, не понадобится перенапрягать память.
Компилятору плевать на любые комментарии, но разбираться в коде станет гораздо проще.
Пример:
for (int j = 0; j < m; r += array[k][j++]); // суммируем все элементы в k-й строке
Компилятору плевать на любые комментарии, но разбираться в коде станет гораздо проще.
Пример:
for (int j = 0; j < m; r += array[k][j++]); // суммируем все элементы в k-й строке
Похожие вопросы
- Как написать код для этого задания на языке С++
- Помогите с заданием по программированию, С++, напишите код для 1 курса
- Написать код на языке си
- Программирование С++ . Напишите код
- Написать код на языке Си
- Задание на c++ ответить на вопросы и написать код
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование на си в Визуал студио
- Написать код на си .Желательно с объяснением
- Программирование на C++ .Помогите написать код.
Тако-о-о-ой огромный труд!!!
Когда-нибудь автор вопроса освоит язык C++ и воспользуется Вашим кодом.