Известно что в матрице элемент последнего столбца может иметь лишь значения 0 и 1 найти среднее арифметическое общей совокупности элементов тех строк, последний элемент которых равен 1
На скрине тема занятия

#include <iostream>
#include <random>
#include <iomanip>
using namespace std;
int main() {
cout << "n: ";
size_t n;
cin >> n;
const auto m = n - 1U;
uniform_int_distribution<int> uid(0, 1);
mt19937 gen{ random_device()() };
auto sum = 0;
auto matrix = new int*[n];
for (auto i = 0U; i < n; ++i) {
matrix[i] = new int[n];
auto sum_line = 0;
for (auto j = 0U; j < n; ++j) {
matrix[i][j] = uid(gen);
sum_line += matrix[i][j];
cout << setw(3U) << matrix[i][j];
}
puts("");
if (matrix[i][m]) sum += sum_line;
}
cout << "sum: " << sum << '\n';
for (auto i = 0U; i < n; ++i) delete[] matrix[i];
delete[] matrix;
}
P.S. Всё в одном флаконе!
Не ясно причем здесь элемент последнего столбца...
Среднее арифметическое общей совокупности элементов тех строк, последний элемент которых равен 1 на Python - вот:
matrix = [
[3,4,2,0],
[3,5,2,1],
[6,7,8,5],
[2,0,3,1]
]
n = list(filter(lambda x: x[-1] == 1,matrix))
nn = [i for elem in n for i in elem]
print(sum(nn)/len(nn))
#include <iostream>
using namespace std;
double summ(int* arr, size_t size)
{
int summ = 0, it = 0;
for (size_t i = 0; i < size; i++)
{
if (arr[size*i+size-1])
for (size_t j = 0; j < size - 1; j++) {
summ += arr[i * size + j]; it++;
}
}
return it ? (double)summ / it : 0;
}
int main()
{
const size_t n = 4;
int arr[n][n] = { {2,3,5,0},{1,2,3,1},{3,4,1,1},{3,2,4,0} };
cout << summ(arr[0], n);
}