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

Посчитать сумму чисел по диагонали матрицы - C++

Восстановить пароль Регистрация
 
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
13.12.2010, 13:53     Посчитать сумму чисел по диагонали матрицы #1
задаем в файл банально вот такую матрицу
10001
01010
00100
01010
10001
и прога должна посчитать сумму чисел по диагонали
никак не пойму што и где неправильно помогите плиз)

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
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream f1;
f1.open("dvymernyi_massiv.txt");
if(!f1)
{
cout << "Nevozmozhno otkryt' fail"<< endl;
exit(1);
}
 
        const int SIZE = 5;
        
        
        int arr[SIZE][SIZE];
        int i, j;
        cout<<"Massiv:"<<endl;
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                        f1>>arr[i][j];
                }
        }
 
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                        cout<<arr[i][j]<<'\t';
                }
                cout<<endl;
        }
        cout<<'\n';
        
        int sum1,sum2,sum;
        if ((i=j)||(i=SIZE-1-j))
        {
           sum1=sum+=arr[i][j];
           i++;                     
        }
        sum2=sum-=arr[(SIZE-1)/2][(SIZE-1)/2];
        sum=sum1-sum2;
        cout<<"Summa elementov=";
        cout<<sum<<endl;
        cout<<endl;
        f1.close();
        cin.get();
        return 0;
}
Добавлено через 23 часа 3 минуты
помогите людиииии!!!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 13:53     Посчитать сумму чисел по диагонали матрицы
Посмотрите здесь:

Прочитать матрицу из файла и посчитать сумму элементов на главной диагонали C++
C++ Найти сумму дополнительных чисел побочной диагонали матрицы
Нужна блок схема к задаче - посчитать сумму элементов выше главной диагонали матрицы 5х5 C++
Посчитать сумму элементов, расположенных на побочной диагонали матрицы C++
Задать двумерный массив. Посчитать сумму элементов главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
13.12.2010, 14:00     Посчитать сумму чисел по диагонали матрицы #2
Витька, чем конкретно вас не устраивает данная прога? Из файла не читает или сумму не правильно находит?
Сумму чисел какой диагонали надо найти? Если главной, то вот:
C++
1
2
3
4
5
int sum = 0;
for(i = 0; i < SIZE; ++i)
{
    sum += arr[i][i];
}
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
13.12.2010, 19:18  [ТС]     Посчитать сумму чисел по диагонали матрицы #3
кароче она сумму считает неверно. поидее ответ должен быть явно больше1)) а прога мне выдает ответ 1

Добавлено через 3 минуты
ну и еще желательно столбцы и строки разделять как i и j. то есть если нулевой элемент i равен нулевому элементу j то считать в сумму.и потом i++. а также если нулевой элемент i равен последнему элементу j то считать в сумму.и опять i++
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.12.2010, 21:19  [ТС]     Посчитать сумму чисел по диагонали матрицы #4
помогите плииииззз!!!
xdozorx
15 / 16 / 1
Регистрация: 13.12.2009
Сообщений: 138
Записей в блоге: 1
15.12.2010, 22:14     Посчитать сумму чисел по диагонали матрицы #5
C++
1
2
3
4
5
6
7
8
int sum=0;
for(i = 0; i < SIZE; i++)
        {
                for(j = 0; j < SIZE; j++)
                {
                       if (i=j) sum=sum+arr[i][j];
                }
         }
сумма по главное диагонале
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.12.2010, 23:18  [ТС]     Посчитать сумму чисел по диагонали матрицы #6
черт а почему по главной считает теперь 4? хотя ответ должен быть 5)
eczo
37 / 37 / 1
Регистрация: 15.12.2010
Сообщений: 110
16.12.2010, 00:05     Посчитать сумму чисел по диагонали матрицы #7
Цитата Сообщение от Витька Посмотреть сообщение
черт а почему по главной считает теперь 4? хотя ответ должен быть 5)
есще бы он считал правильно

не катит
C++
1
if (i=j) sum=sum+arr[i][j];
ведь мы сравнивать должны а не присваивать
C++
1
if (i==j) sum=sum+arr[i][j];
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
16.12.2010, 06:57     Посчитать сумму чисел по диагонали матрицы #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Витька, не знаю чего у вас там не так считает:
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
#include <iostream>
#include<fstream>
using namespace std;
//////////////////////////////////////
int main()
{
    ifstream f1;
    f1.open("dvymernyi_massiv.txt");
    if(!f1)
    {
        cout << "Nevozmozhno otkryt' fail"<< endl;
        exit(1);
    }
 
    const int SIZE = 5;
       
        int arr[SIZE][SIZE];
        int i, j;
        cout<<"Massiv:"<<endl;
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                        f1>>arr[i][j];
                }
        }
    f1.close();
 
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                       cout<<arr[i][j]<<'\t';
                }
                cout<<endl;
        }
        cout<<'\n';
        
     
    int sum = 0;
    for(i = 0; i < SIZE; ++i)
    {
              sum += arr[i][i];
    }
 
        cout << "Summa elementov = " << sum;
     
    cin.get();
    return 0;
}
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
16.12.2010, 21:29  [ТС]     Посчитать сумму чисел по диагонали матрицы #9
а да. вот если == то норм. а как обратную диагональ задать?
eczo
37 / 37 / 1
Регистрация: 15.12.2010
Сообщений: 110
17.12.2010, 01:03     Посчитать сумму чисел по диагонали матрицы #10
а как обратную диагональ задать?
перебирать строки нормально а столбцы с конца на начало:
C++
1
2
3
4
5
6
7
8
int sum=0;
for(i = 0; i < SIZE; i++)
        {
                for(j =  SIZE; j >0; j++)
                {
                       if (i==j) sum=sum+arr[i][j];
                }
         }
если голова правильно варит
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
17.12.2010, 02:39  [ТС]     Посчитать сумму чисел по диагонали матрицы #11
ахахаха. да я уже сам сделал. и причем так же. спс всем большое!!!
nondeadlollipop
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
17.12.2010, 05:39     Посчитать сумму чисел по диагонали матрицы #12
Цитата Сообщение от Витька Посмотреть сообщение
а как обратную диагональ задать?
обратная,т.е. побочная
можно сделать как минимум двумя вариантами
1)
C++
1
2
3
4
5
6
7
8
9
    
int sum=0;
for(i = 0; i < n; i++)
{
       for(j =  n-1; j >=0; j--) // j уменьшаем,мы идем от конца,причем начальная точка =n-1,и должен быть больше или включать ноль
        {
             if (i==j) sum=sum+a[i][j];
         }
}
2)
C++
1
2
3
4
5
6
7
for(i = 0; i < n; i++)
{
       for(j = 0; j<n; j++) 
        {
             if (i+j+1 == n) sum=sum+a[i][j];
         }
}
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
17.12.2010, 09:24     Посчитать сумму чисел по диагонали матрицы #13
Можно опять же обойтись без j:
C++
1
2
3
4
5
int sum = 0;
for(i = 0; i < SIZE; ++i)
{
         sum += arr[i][SIZE-i-1];
}
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
22.12.2010, 01:30  [ТС]     Посчитать сумму чисел по диагонали матрицы #14
а как написать, чтобы матрица была нечетной, т.е. const int SIZE может быть только нечетным.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
22.12.2010, 09:20     Посчитать сумму чисел по диагонали матрицы #15
Цитата Сообщение от Витька Посмотреть сообщение
а как написать, чтобы матрица была нечетной, т.е. const int SIZE может быть только нечетным.
Ну, поскольку SIZE - константа, то просто задавайте её в программе нечётным числом. Если же будет динамический массив и размер вводится пользователем, то сделайте проверку на ввод, типа:
C++
1
2
if(size % 2 == 0)
{/*то вводим заново*/}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2010, 17:26     Посчитать сумму чисел по диагонали матрицы
Еще ссылки по теме:

C++ В матрице посчитать сумму четных элементов выше главной диагонали
C++ Посчитать среднее геометрическое главной диагонали матрицы
Посчитать сумму чисел матрицы в КАЖДОЙ чётной и нечётной строке C++

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

Или воспользуйтесь поиском по форуму:
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
22.12.2010, 17:26  [ТС]     Посчитать сумму чисел по диагонали матрицы #16
спс огромное
Yandex
Объявления
22.12.2010, 17:26     Посчитать сумму чисел по диагонали матрицы
Ответ Создать тему
Опции темы

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