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

Сумма положительных элементов - C++

Восстановить пароль Регистрация
 
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 11:00     Сумма положительных элементов #1
Вычислить сумму положительных элементов матрицы, находящихся под главной диагональю и на ней. Профессионалы, буду Вам благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2012, 11:00     Сумма положительных элементов
Посмотрите здесь:

C++ сумма положительных и отрицательных по модулю элементов массива.
Сумма положительных элементов, произведение элементов массива C++
C++ сумма положительных элементов
C++ Массив: Найти такую неразрывную последовательность положительных чисел, сумма элементов у которой максимальная.
C++ Удвоенная сумма положительных элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.03.2012, 13:58     Сумма положительных элементов #2
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
//Вычислить сумму положительных элементов матрицы, находящихся под главной диагональю и на ней
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Заполнение массива целыми числами в диапазоне от -50 до 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Вычисление суммы положительных элементов под главной диагональю
    int s = 0;
    i = 1;
    j = 0;
    for (k = 0; k < n-1; ++k)
    {
        if (a[i][j] > 0)
        {
            s=s+a[i][j];
        }
        ++i;
        ++j;
    }
 
    //Вычисление суммы положительных элементов на главной диагонали
    i = 0;
    j = 0;
    for (k = 0; k < n; ++k)
    {
        if (a[i][j] > 0)
        {
            s=s+a[i][j];
        }
        ++i;
        ++j;
    }
    
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 18:15  [ТС]     Сумма положительных элементов #3
Цитата Сообщение от Heidel Посмотреть сообщение
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
//Вычислить сумму положительных элементов матрицы, находящихся под главной диагональю и на ней
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Заполнение массива целыми числами в диапазоне от -50 до 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Вычисление суммы положительных элементов под главной диагональю
    int s = 0;
    i = 1;
    j = 0;
    for (k = 0; k < n-1; ++k)
    {
        if (a[i][j] > 0)
        {
            s=s+a[i][j];
        }
        ++i;
        ++j;
    }
 
    //Вычисление суммы положительных элементов на главной диагонали
    i = 0;
    j = 0;
    for (k = 0; k < n; ++k)
    {
        if (a[i][j] > 0)
        {
            s=s+a[i][j];
        }
        ++i;
        ++j;
    }
    
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
к сожалению не правильно считает)))
пробывал чуть исправить не получилось
C
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
56
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
    int i, j, k,s1=0,s2=0;
    int n;
    int** a;
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%20-10;
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
    //Вычисление суммы положительных элементов под главной диагональю
    int s = 0;
    i = 1;
    j = 0;
    for (k = 0; k < n-1; ++k)
    {
        if (a[i][j] > 0)
        {
            s1=s1+a[i][j];
        }
        ++i;
        ++j;
    }
    //Вычисление суммы положительных элементов на главной диагонали
    i = 0;
    j = 0;
    for (k = 0; k < n; ++k)
    {
        if (a[i][j] > 0)
        {
            s2=s2+a[i][j];
        }
        ++i;
        ++j;
    }
{s=s1+s2;}
    cout <<"\nSumma S = " << s <<"\n";
    for(i = 0; i < n; ++i)
    delete[] a[i];
    delete[] a;
    system("Pause");
        return 0;
}
Добавлено через 2 часа 46 минут
ну воть...:-(

Добавлено через 33 минуты
блин...
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.03.2012, 18:57     Сумма положительных элементов #4
Serjant0007, у тебя нет ошибки в задании?
Тебе нужно найти сумму положительных элементов матрицы, находящихся под главной диагональю и на ней или сумму положительных элементов матрицы, находящихся под главной диагональю и над ней?
В первом случае код программы вот (немного модифицированный вариант из первого коммента)
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//Âû÷èñëèòü ñóììó ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ Г¬Г*òðèöû, Г*Г*õîäÿùèõñÿ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ ГЁ Г*Г* Г*ГҐГ©
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Г‡Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* öåëûìè Г·ГЁГ±Г«Г*ìè Гў äèГ*ГЇГ*çîГ*ГҐ îò -50 äî 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Âû÷èñëåГ*ГЁГҐ ñóììû ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ
    unsigned short int s = 0;
    i = 1;
    j = 0;
    k = 0;
    while (k < n-1)
    {
        if (a[i][j] > 0)
        {
            s+=a[i][j];
        }
        ++i;
        ++j;
        ++k;
    }
 
    //Âû÷èñëåГ*ГЁГҐ ñóììû ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ Г*Г* ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëè
    i = 0;
    k = 0;
    while (k < n)
    {
        if (a[i][i] > 0)
        {
            s+=a[i][i];
        }
        ++i;
        ++k;
    }
    
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
Во втором случае код программы вот
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//Âû÷èñëèòü ñóììó ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ Г¬Г*òðèöû, Г*Г*õîäÿùèõñÿ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ ГЁ Г*Г*Г¤ Г*ГҐГ©
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Г‡Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* öåëûìè Г·ГЁГ±Г«Г*ìè Гў äèГ*ГЇГ*çîГ*ГҐ îò -50 äî 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Âû÷èñëåГ*ГЁГҐ ñóììû ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ
    unsigned short int s = 0;
    i = 1;
    j = 0;
    k = 0;
    while (k < n-1)
    {
        if (a[i][j] > 0)
        {
            s+=a[i][j];
        }
        ++i;
        ++j;
        ++k;
    }
 
    //Âû÷èñëåГ*ГЁГҐ ñóììû ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ Г*Г* ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëè
    i = 0;
    j = 1;
    k = 0;
    while (k < n-1)
    {
        if (a[i][j] > 0)
        {
            s+=a[i][j];
        }
        ++i;
                ++j;
        ++k;
    }
    
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
29.03.2012, 19:14     Сумма положительных элементов #5
C++
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <windows.h>
#include <time.h>
 
using namespace std;
 
char *rus;
char *printrus(char *text, char *rus)
{
    try
    {
        rus = new char[255];
    }
    catch(bad_alloc xa)
    {
        exit(1);
    }
    CharToOem(text, rus);
    return rus;
}
 
int main()
{
    cout << printrus("Матрица", rus)
         << endl;
    const int sz = 5;
    int a[sz][sz];
    for(int i = 0; i < sz; i++)
    {
        for(int j = 0; j < sz; j++)
        {
            a[i][j] = rand() % 20 - 10;
            cout << a[i][j]
                 << "\t";
        }
        cout << endl;
    }
    int x;
    int sum_pod_diagon = 0;
    int sum_diagon = 0;
    for(int i = 0; i < sz; i++)
    {
        for(int j = 0; j < sz; j++)
        {
            x = j;
            if(i == j)
            {
                if(a[i][j] >= 0)
                {
                    sum_diagon += a[i][j];
                }
                while(x != 0)
                {
                    if(a[i][--x] >= 0)
                    {
                        sum_pod_diagon += a[i][x];
                    }
                }
            }
        }
    }
    cout << printrus("Сумма элементов под главной диагональю: ", rus)
         << sum_pod_diagon
         << endl
         << printrus("Сумма элементов главной диагонали: ", rus)
         << sum_diagon
         << endl;
    delete [] rus;
    system("pause");
    return 0;
}
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:20  [ТС]     Сумма положительных элементов #6
Heidel, Для первого варианта нужно
C
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
56
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    int i, j, k;
    int n;
    int** a;
        cout << "Vvedite razmernost' matrizy n = ";
        cin >> n;
        cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
        a = new int* [n];
        for (i = 0; i < n; ++i)
        {
                a[i] = new int[n];
                for (j = 0; j < n; ++j)
                {
            a[i][j] = rand()%50; //Заполнение массива целыми числами в диапазоне от -50 до 50
                        cout << a[i][j] << "\t";
                }
                cout <<"\n";
    } 
        //Вычисление суммы положительных элементов под главной диагональю
        unsigned short int s = 0;
        i = 1;
        j = 0;
        k = 0;
        while (k < n-1)
        {
                if (a[i][j] > 0)
                {
                        s+=a[i][j];
                }
                ++i;
                ++j;
                ++k;
        }
        //Вычисление суммы положительных элементов на главной диагонали
        i = 0;
        k = 0;
        while (k < n)
        {
                if (a[i][i] > 0)
                {
                        s+=a[i][i];
                }
                ++i;
                ++k;
        }
        cout <<"\nSumma S = " << s <<"\n";
        for(i = 0; i < n; ++i)
        delete[] a[i];
        delete[] a;
 system("pause");
        return 0;
}
но считает не правильно. Должен быть ответ 200
Миниатюры
Сумма положительных элементов  
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:21  [ТС]     Сумма положительных элементов #7
eji, бррр...какой то сложный код.
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
29.03.2012, 19:30     Сумма положительных элементов #8
Serjant0007,
Не сложный, просто Вы не поняли мысль, прокомметировал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int x; // эта переменная будет хранить номер столбца
    int sum_pod_diagon = 0;
    int sum_diagon = 0;
    for(int i = 0; i < sz; i++)
    {
        for(int j = 0; j < sz; j++)
        {
            x = j; // присваеваем
            if(i == j) // если мы в точке главной диагонали (0:0, 1:1, и так далее), то:
            {
                if(a[i][j] >= 0) // если больше 0 прибавляем к общей сумме гл. диагонали
                {
                    sum_diagon += a[i][j];
                }
                while(x != 0) // запускаем цикл до тех пор, пока икс не станет равен 0
                {
                    if(a[i][--x] >= 0) // к примеру мы в точке 1:1, тогда если А(1)(0) больше 0, то прибаляем к сумме Под_диаг
                    {
                        sum_pod_diagon += a[i][x];
                    }
                }
            }
        }
    }
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:38  [ТС]     Сумма положительных элементов #9
eji, так ну щас переделаю немного под старый компелятор Turbo C посмотрю как работает

Добавлено через 5 минут
Цитата Сообщение от Serjant0007 Посмотреть сообщение
eji, так ну щас переделаю немного под старый компелятор Turbo C посмотрю как работает
хм...не получается переделать
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.03.2012, 19:40     Сумма положительных элементов #10
Serjant0007, видимо, я не правильно тебя поняла, и написала программу, которая считает сумму положительных чисел на "диагонали", располагающейся под главной диагональю и на самой главной диагонали.
Код программы, которая считает положительные элементы в "треугольнике" под главной диагональю, включая саму главную диагональ, вот
C++
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
56
57
//Âû÷èñëèòü ñóììó ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ Г¬Г*òðèöû, Г*Г*õîäÿùèõñÿ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ ГЁ Г*Г* Г*ГҐГ©
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Г‡Г*ïîëГ*ГҐГ*ГЁГҐ Г¬Г*Г±Г±ГЁГўГ* öåëûìè Г·ГЁГ±Г«Г*ìè Гў äèГ*ГЇГ*çîГ*ГҐ îò -50 äî 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Âû÷èñëåГ*ГЁГҐ ñóììû ïîëîæèòåëüГ*ûõ ýëåìåГ*òîâ ïîä ГЈГ«Г*ГўГ*îé äèГ*ГЈГ®Г*Г*ëüþ
    unsigned short int s = 0;
    i = 0;
    k = 1;
    while (k <= n)
    {
        for (j = 0; j < k; ++j)
        {
            if (a[i][j] > 0)
            {
            s+=a[i][j];
            }
        }
        ++i;    
        ++k;
    }
 
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
eji
116 / 116 / 6
Регистрация: 17.09.2010
Сообщений: 288
29.03.2012, 19:41     Сумма положительных элементов #11
Serjant0007, добавьте вначало функции main эту строку:
C++
1
srand(time(NULL));
Для того что бы генерировались разные числа.
хм...не получается переделать
Вам на С или С++?
Попробуйте воспользоваться code::blocks.
Миниатюры
Сумма положительных элементов  
Serjant0007
2 / 2 / 0
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:48  [ТС]     Сумма положительных элементов #12
Спасибо Всем разобрался! тема закрыта!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2012, 20:42     Сумма положительных элементов
Еще ссылки по теме:

Сумма и количество положительных и отрицательных элементов C++
C++ Максимальная сумма элементов строки / минимальная сумма элементов столбца матрицы
Общая сумма положительных элементов трёх массивов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
29.03.2012, 20:42     Сумма положительных элементов #13
C++
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
56
//Вычислить сумму положительных элементов матрицы, находящихся над главной диагональю, не включая её
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main ()
 
{
    srand(time(NULL));
    
    int i, j, k;
    int n;
    int** a;
 
    cout << "Vvedite razmernost' matrizy n = ";
    cin >> n;
 
    cout << "\nMatriza razmerom " << n << "x" << n << "\n\n";
 
    a = new int* [n];
    for (i = 0; i < n; ++i)
    {
        a[i] = new int[n];
        for (j = 0; j < n; ++j)
        {
            a[i][j] = rand()%101-50; //Заполнение массива целыми числами в диапазоне от -50 до 50
            cout << a[i][j] << "\t";
        }
        cout <<"\n";
    }
 
    //Вычисление суммы положительных элементов над главной диагональю, не включая её
    unsigned short int s = 0;
    i = 0;
    k = 1;
    while (k < n)
    {
        for (j = k; j < n; ++j)
        {
            if (a[i][j] > 0)
            {
            s+=a[i][j];
            }
        }
        ++i;    
        ++k;
    }
    cout <<"\nSumma S = " << s <<"\n";
    
    for(i = 0; i < n; ++i)
    delete[] a[i];
        delete[] a;
 
    return 0;
}
Yandex
Объявления
29.03.2012, 20:42     Сумма положительных элементов
Ответ Создать тему
Опции темы

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