C/C++

Добавить функцию в код [C++]

Добрый вечер, товарищи программисты!

Столкнулся с такой проблемой, написал код который относительно работает, но забыл добавить функцию которая считает последний столбец в двухмерном массиве.

Изначальное задание звучит так: Функция принимает двумерный вещественный массив и проверяет, равны ли суммы элементов его первой строки и последнего столбца. Функция возвращает результат логического типа.

Код который мне удалось написать:

#include
#include
#include
using namespace std;

int** Create(int n) // создание
{
int** a = new int* [n];
for (int i = 0; i < n; i++)
a[i] = new int[n];
return a;
}

void Random(int** a, int n, int A, int B) // заполнение
{
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
a[i][j] = rand() % (B - A + 1) + A;
}

void Print(int** a, int n) // вывод на печать
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << a[i][j] << " ";
cout << "\n";
}

}

void Summa(int** a, int n)
{
for (int i = 0; i < n; i++)
{
int s = 0;
for (int j = 0; j < n; ++j)
s += a[0][j];
//cout << s << '\n';
}
}

void Summa2(int** a, int n)
{
for (int i = 0; i < n; i++)
{
int lnn = 0;
for (int j = 0; j < n; i++)
double lnn = sizeof(a[i][j]);
cout << lnn << 'n';
}

}

int main()
{
srand((int)time(0));
int n, A = 1, B = 9, ** a;
double sum1 = 0;
double sum2 = 0;
cout << "n="; cin >> n;

a = Create(n);

Random(a, n, A, B);
Print(a, n);
Summa(a, n);
Summa2(a, n);

for (int i = 0; i < n; i++)
delete[]a[i];
delete[]a;
system("pause");
return 0;
}

Буду безумно вам благодарен, если добавите данную функцию (Суммирования всех элементов последнего столбца)

UPD: Summa2 - мой набросок, который не работает!)
Митя Кореш
Митя Кореш
302
#include <iostream>
using namespace std;
// Сумма заданной строки матрицы
int sumrow(int** mx, int r, int c, int i) {
int sum = 0;
if (i >= 0 && i < r) {
for (int j = 0; j < c; ++j) {
sum += mx[i][j];
}
}
return sum;
}
// Сумма заданного столбца матрицы
int sumcol(int** mx, int r, int c, int i) {
int sum = 0;
if (i >= 0 && i < c) {
for (int j = 0; j < r; ++j) {
sum += mx[j][i];
}
}
return sum;
}
// Проверка на равенство суммы первой строки и последнего столбца
bool sum_first_row_last_column_equal(int** mx, int r, int c) {
return sumrow(mx, r, c, 0) == sumcol(mx, r, c, c - 1);
}
void show(int** mx, int r, int c) {
for (int i = 0; i < r; ++i) {
for (int j = 0; j < c; ++j) {
cout << mx[i][j] << ' ';
}
puts("");
}
puts("");
}
int main() {
int r = 3;
int c = 4;
int** mx = new int*[r];
for (int i = 0; i < r; ++i) mx[i] = new int[c];
mx[0][0] = 2; mx[0][1] = 3; mx[0][2] = 4; mx[0][3] = 5;
mx[1][0] = 1; mx[1][1] = 7; mx[1][2] = 9; mx[1][3] = 6;
mx[2][0] = 2; mx[2][1] = 8; mx[2][2] = 3; mx[2][3] = 3;
show(mx, r, c);
if (sum_first_row_last_column_equal(mx, r, c)) {
puts("Equal!");
} else {
puts("Not equal!");
}
for (int i = 0; i < r; ++i) delete[] mx[i];
delete[] mx;
system("pause > nul");
}
Ahmad Abuhatab
Ahmad Abuhatab
66 323
Лучший ответ