Форум программистов, компьютерный форум CyberForum.ru

Составить функцию вычисления суммы элементов выше диагонали - C++

Восстановить пароль Регистрация
 
artyrka94
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 15
11.09.2012, 00:13     Составить функцию вычисления суммы элементов выше диагонали #1
Задание:
Кликните здесь для просмотра всего текста

Составить функцию вычисления суммы S положительных элементов матрицы, лежащие выше некоторой диагонали, параллельной главной диагонали. Используя эту функцию, в матрице K(5,5) вычислить произведение суммы S элементов, лежащих выше диагонали А (см рисунок) на сумму S элементов лежащих выше диагонали B, а в матрице T(6,6)- сумму S элементов, лежащих выше диагонали C:

матрица K:
_________* A * * *______________матрица T:* * * * * *
_________* * A * *_______________________C * * * * *
_________B * * A *_______________________* C * * * *
_________* B * * A_______________________* * C * * *
_________* * B * *_______________________* * * C * *
_______________________________________ * * * * C *

мое решение:
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
// ---------------------------
void vvod(int[][6], int);
int sm(int[][6], int, int, int, int);
// ---------------------------
int k[5][5], t[6][6];
// --------------------------
void vvod(int f[][6], int n)
{
    srand(time(0));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        //  cin>> f[i][j];
            f[i][j]=10+rand()%50;
}
 
// -------------------------
int sm(int f[][6], int n, int m, int x, int y)
{
    int s = 0;
    for (int i = x, p=0; i < n; i++, p++)
        for (int j = y, r=0; j < m; j++,r++)
            if ((p <= r) && (f[i][j] > 0))
                s=s+f[i][j];
    return s;
}
 
// ----------------------------
main()
{
    int i, j, smt, smk;
    vvod(k,5);
    vvod(t,6);
    cout << "Matrica K(5,5):" << endl;
    for (i = 0; i < 5; i++)
    {
        cout << endl << endl;
        for (j = 0; j < 5; j++)
            cout << "     " << k[i][j] << " (" << i << "," << j << ")   |";
    }
    cout << endl << endl;
    cout << "Matrica T(6,6):" << endl;
    for (i = 0; i < 6; i++)
    {
        cout << endl << endl;
        for (j = 0; j < 6; j++)
            cout << "     " << t[i][j] << " (" << i << "," << j << ")   |";
    }
    cout << endl << endl;
    smt = sm(t, 5, 5, 0, 0);
    smk = sm(k, 2, 4, 0, 2) * sm(k, 4, 3, 1, 1);
    cout << "smt=" << smt;
}


компилятор ругается на vvod(k,5); и smk = sm(k, 2, 4, 0, 2) * sm(k, 4, 3, 1, 1);

ошибки:

Кликните здесь для просмотра всего текста
cannot convert `int (*)[5]' to `int (*)[6]' for argument `1' to `void vvod(int (*)[6], int)'
cannot convert `int (*)[5]' to `int (*)[6]' for argument `1' to `int sm(int (*)[6], int, int, int, int)'
cannot convert `int (*)[5]' to `int (*)[6]' for argument `1' to `int sm(int (*)[6], int, int, int, int)'


ваши предложения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 00:13     Составить функцию вычисления суммы элементов выше диагонали
Посмотрите здесь:

Написать функцию для вычисления суммы элементов квадратной матрицы, расположенных ниже главной диагонали C++
C++ Написать функцию для вычисления суммы элементов n квадратных матриц, которые расположены ниже главной диагонали.
C++ Составить функцию вычисления суммы с точностью эпсилон
C++ Вычислить суммы элементов столбцов матрицы
[Функции] Работа с матрицей (организовать функцию для вычисления суммы положительных элементов, размещенных на побочной диагонали) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.09.2012, 01:00     Составить функцию вычисления суммы элементов выше диагонали #2
так
C++
1
void vvod(int (*f)[6], int n)
или так
C++
1
2
template <typename T>
void vvod(T& f, int n)
А посоветую использовать std::array (для статических массивов)
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
11.09.2012, 01:02     Составить функцию вычисления суммы элементов выше диагонали #3
C++
1
2
3
4
5
6
7
int **k, **t;
    k = new int*[5];
    for(int i = 0; i < 5; ++i)
      k[i] = new int[5];
    t = new int*[6];
    for(int i = 0; i < 6; ++i)
      t[i] = new int[6];
Аргументы ф-ций поменять на int** f
Не забыть удалить выделенную память в конце.
artyrka94
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 15
11.09.2012, 14:49  [ТС]     Составить функцию вычисления суммы элементов выше диагонали #4
спасибо за ответы! но если можно вставьте их в мой код, что бы я видел как правильно использовать. Просто я только начал изучать С++.. Заранее спасибо
Yandex
Объявления
11.09.2012, 14:49     Составить функцию вычисления суммы элементов выше диагонали
Ответ Создать тему
Опции темы

Текущее время: 21:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru