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

Вычислить сумму элементов в области 1-2 (Не работает программа) - C++

Восстановить пароль Регистрация
 
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
22.12.2012, 18:27     Вычислить сумму элементов в области 1-2 (Не работает программа) #1
Дан двухмерный массив (вектор) n целых чисел.
Ввод функцией void inMas1(int& n,int a[N]), вывод массива функцией void outMas1(int n,int a[N])
Если условие выполнено (функция типа bool), то выполнить пребразование (функция типа void) и выполнить вычисление (функция типа int).
Вычислить сумму элементов в области 1-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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
        {
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];
        }
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t";
        cout<<endl;
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2==0) return 0;
            }
    }
    return 1;
}
 
 
int Sum(int n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for(int i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++);
 
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n=";
    cin>>n;
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица верна, в столбцах на четных местах все элементы нечетны."<<endl;
 
    }
    else
 
        cout<<"\nМатрица не верна по условию,программа будет закрыта."<<endl;
    cout<< Sum(n,a);
 
 
    cin >> n;
 
    return 0;
}
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 18:27     Вычислить сумму элементов в области 1-2 (Не работает программа)
Посмотрите здесь:

Вычислить сумму элементов матрицы в заштрихованной области C++
Вычислить сумму элементов матрицы в заштрихованной области C++
C++ Изменить программу (Вычислить сумму элементов в области)
C++ Вычислить в одномерном массиве вычислить сумму элементов массива...
C++ В одновременном массиве состоящем из N вещественных элементов вычислить сумму отрицательных элементов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
22.12.2012, 23:04  [ТС]     Вычислить сумму элементов в области 1-2 (Не работает программа) #2
Как сделать???
Pentacle
0 / 0 / 0
Регистрация: 22.12.2012
Сообщений: 6
22.12.2012, 23:35     Вычислить сумму элементов в области 1-2 (Не работает программа) #3
Для вычисления суммы элементов массива как указано на рисунке, попробуйте использовать следующую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int calc_sum_arr(int arr[][N])
{
    int Sum = 0, decrem = 0;
    for(int j = N - 1; j >= N / 2; j--)
    {
        for (int i = decrem; i < N - decrem  ; i++)
        {
          Sum +=arr[i][j];  
        }
        decrem ++;
    }
    return Sum;
}
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
23.12.2012, 10:41  [ТС]     Вычислить сумму элементов в области 1-2 (Не работает программа) #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int calc_sum_arr(int arr[][N])
{
    int Sum = 0, decrem = 0;
    for(int j = N - 1; j >= N / 2; j--)
    {
        for (int i = decrem; i < N - decrem  ; i++)
        {
          Sum +=arr[i][j];  
        }
        decrem ++;
    }
    return Sum;
}
[/QUOTE]


А попроще не сделать?
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
23.12.2012, 10:43     Вычислить сумму элементов в области 1-2 (Не работает программа) #5
проще некуда...
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.12.2012, 10:53     Вычислить сумму элементов в области 1-2 (Не работает программа) #6
s3423, это Ваша функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Sum(int n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for( i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++)s+=a[i][j];
 
}
    return s;
}
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
23.12.2012, 11:53  [ТС]     Вычислить сумму элементов в области 1-2 (Не работает программа) #7
Pentacle, Не работает...
valeriikozlov, Запустил программу с этой функцией, она выводит результат даже когда матрица неверна, и у одной матрицы 3х3 посчитала сумму не так

Добавлено через 34 минуты
Можно вот так сделать?
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
72
73
74
75
76
77
78
#include<iostream>
#include<locale>
#define N 100
 
using namespace std;
 
void inMas1(int& n,int a[N][N])
{
    cout<<"\nВвод элементов матрицы A \n";
    for (int i=0; i<n; i++)      
        for (int j=0; j<n; j++)  
        {   
            cout<<"a["<<i<<"]["<<j<<"]=";
            cin>>a[i][j];    
        }   
}
 
void outMas1(int n,int a[N][N])
{
    cout<<"\nВведена матрица A \n";
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        cout<<a[i][j]<<"\t"; 
        cout<<endl; 
    }
}
 
bool uslov (int n, int a[N][N])
//В каждом столбце все элементы на чётных местах нечётны.
{
    int k=0;
    for(int j=0; j<n; j++)
    {
 
        for(int i=1; i<n; i+=2)
        {
            if(a[i][j]%2==0) return 0;
            }
    }
    return 1;
}
 
 
int Sum(int n, int a[N][N])
//Вычислить сумму элементов в области 3-4
{
    int s=0,i,j;
    for( i=0;i<n;i++)
    {
        int j;
        if(i<(n/2)) j=n-i-1;
        else j=i;
        for(;j<n;j++)s+=a[i][j];
 
}
    return s;
}
 
int main()
{
    setlocale (LC_ALL, "RUS");
    int i,j,n,m,a[N][N];
    cout<<"n="; 
    cin>>n;                                             
    inMas1(n,a);
    outMas1(n,a);
    if(uslov(n,a))
    {
        cout<<"\nМатрица верна, в столбцах на четных местах все элементы нечетны."<<endl;
        cout<<"Сумма="<<Sum(n,a);       
 
    }
    else
        cout<<"\nМатрица не верна по условию,программа будет закрыта."<<endl;
    system("pause");
    return 0;
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.12.2012, 14:44     Вычислить сумму элементов в области 1-2 (Не работает программа) #8
Цитата Сообщение от s3423 Посмотреть сообщение
и у одной матрицы 3х3 посчитала сумму не так
Значит здесь разница в понимании что делать с числами, которые находятся на границе указанной зоны (включать их в сумму или нет. В моем варианте они включаются в сумму).
Или вся загвоздка может быть вот в чем:
Цитата Сообщение от s3423 Посмотреть сообщение
Вычислить сумму элементов в области 1-2 .
А это уже из Ваш комментарий к коду:
Цитата Сообщение от s3423 Посмотреть сообщение
//Вычислить сумму элементов в области 3-4
Я вычислял сумму элементов в области 1-2. А Вам что именно нужно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 15:15     Вычислить сумму элементов в области 1-2 (Не работает программа)
Еще ссылки по теме:

Найти сумму элементов заштрихованной области таблицы А размером МхN для любого N > 1 C++
C++ Программа не работает как надо. Задача: Вывести сумму всех элементов массива, кратных данному числу К (вводится с клавиатуры)
C++ Вычислить сумму элементов массива, находящихся до минимального и после максимального элементов

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

Или воспользуйтесь поиском по форуму:
s3423
0 / 0 / 0
Регистрация: 22.11.2012
Сообщений: 31
23.12.2012, 15:15  [ТС]     Вычислить сумму элементов в области 1-2 (Не работает программа) #9
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Я вычислял сумму элементов в области 1-2. А Вам что именно нужно?
Это и нужно. 3-4 и 1-2 обозначают одну указаную область, просто расположены числа по разному, в комменте забыл переименовать. Последний код программы, который я скинул, считает уже нормально, но есть нюанс в том, что если я в ввожу матрицу из одного элемента, и пишу в ней цифру 1, то она пишет, что матрица верна, так и должно быть? Мне казалось, что матрица не верна должна быть.
Yandex
Объявления
23.12.2012, 15:15     Вычислить сумму элементов в области 1-2 (Не работает программа)
Ответ Создать тему
Опции темы

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