Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
1

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

29.03.2012, 11:00. Показов 1448. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вычислить сумму положительных элементов матрицы, находящихся под главной диагональю и на ней. Профессионалы, буду Вам благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2012, 11:00
Ответы с готовыми решениями:

Сумма положительных элементов массива и положительных элем столбца
Помогите с задачкой по с++ Дано массив 7 на 5, нужно найти сумму положительных элементов массива,...

Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 - сумма и количество положительных элементов массива Х[N]; s1 u k2 - сумма
Составить программу, в которой вычислить z=(s1+s2)/(k1*k2), где s1 и k1 - сумма и количество...

Вычислить F=(Sn+So)/(Sn-So), где Sn - сумма положительных элементов в нечетных строках матрицы Y(9x12), а So - сумма отр
Вычислить F=(Sn+So)/(Sn-So), где Sn - сумма положительных элементов в нечетных строках матрицы...

Сумма положительных элементов, произведение элементов массива
В одномерном массиве,состоящем из n вещественных элементов,вычислить: 1)Сумму положительных...

12
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
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;
}
1
2 / 2 / 1
Регистрация: 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 минуты
блин...
0
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
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;
}
0
133 / 133 / 29
Регистрация: 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;
}
1
2 / 2 / 1
Регистрация: 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
Миниатюры
Сумма положительных элементов  
0
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:21  [ТС] 7
eji, бррр...какой то сложный код.
0
133 / 133 / 29
Регистрация: 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];
                    }
                }
            }
        }
    }
0
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:38  [ТС] 9
eji, так ну щас переделаю немного под старый компелятор Turbo C посмотрю как работает

Добавлено через 5 минут
Цитата Сообщение от Serjant0007 Посмотреть сообщение
eji, так ну щас переделаю немного под старый компелятор Turbo C посмотрю как работает
хм...не получается переделать
0
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
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;
}
0
133 / 133 / 29
Регистрация: 17.09.2010
Сообщений: 288
29.03.2012, 19:41 11
Serjant0007, добавьте вначало функции main эту строку:
C++
1
srand(time(NULL));
Для того что бы генерировались разные числа.
хм...не получается переделать
Вам на С или С++?
Попробуйте воспользоваться code::blocks.
Миниатюры
Сумма положительных элементов  
1
2 / 2 / 1
Регистрация: 21.06.2010
Сообщений: 247
29.03.2012, 19:48  [ТС] 12
Спасибо Всем разобрался! тема закрыта!
0
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
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;
}
0
29.03.2012, 20:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2012, 20:42
Помогаю со студенческими работами здесь

Сумма положительных элементов
В одномерном массиве,что состоит из N действительных элементов,вычислить: Сумму положительных...

сумма положительных элементов
В массиве А(20) целых чисел подсчитать сумму положительных элементов.

Сумма положительных элементов массива
Найти сумму положительных элементов массива. Требования: • Массив должен формироваться из...

Сумма и количество положительных и отрицательных элементов
Написать программу которая считает сумму положительных и количество отрицательных элементов массива...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru