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

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

13.12.2010, 13:53. Показов 4194. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
задаем в файл банально вот такую матрицу
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 минуты
помогите людиииии!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2010, 13:53
Ответы с готовыми решениями:

Посчитать сумму элементов главной диагонали матрицы
Почему когда я хочу посчитать сумму элементов главной диагонали матрицы 4*4 , ответ неправильный?...

Посчитать сумму элементов, расположенных на побочной диагонали матрицы
дан массив n*m, элементы которого целые числа, посчитать сумму элементов расположенных на побочной...

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

Нужна блок схема к задаче - посчитать сумму элементов выше главной диагонали матрицы 5х5
нужно составить блок схему к задаче: посчитать сумму элементов выше главной диагонали матрицы...

15
Бродяга
314 / 268 / 56
Регистрация: 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 / 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 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.12.2010, 21:19  [ТС] 4
помогите плииииззз!!!
0
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 / 0
Регистрация: 10.10.2010
Сообщений: 82
15.12.2010, 23:18  [ТС] 6
черт а почему по главной считает теперь 4? хотя ответ должен быть 5)
0
38 / 38 / 17
Регистрация: 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];
0
Бродяга
314 / 268 / 56
Регистрация: 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 / 0
Регистрация: 10.10.2010
Сообщений: 82
16.12.2010, 21:29  [ТС] 9
а да. вот если == то норм. а как обратную диагональ задать?
0
38 / 38 / 17
Регистрация: 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 / 0
Регистрация: 10.10.2010
Сообщений: 82
17.12.2010, 02:39  [ТС] 11
ахахаха. да я уже сам сделал. и причем так же. спс всем большое!!!
0
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];
         }
}
0
Бродяга
314 / 268 / 56
Регистрация: 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 / 0
Регистрация: 10.10.2010
Сообщений: 82
22.12.2010, 01:30  [ТС] 14
а как написать, чтобы матрица была нечетной, т.е. const int SIZE может быть только нечетным.
0
Бродяга
314 / 268 / 56
Регистрация: 27.08.2010
Сообщений: 553
22.12.2010, 09:20 15
Цитата Сообщение от Витька Посмотреть сообщение
а как написать, чтобы матрица была нечетной, т.е. const int SIZE может быть только нечетным.
Ну, поскольку SIZE - константа, то просто задавайте её в программе нечётным числом. Если же будет динамический массив и размер вводится пользователем, то сделайте проверку на ввод, типа:
C++
1
2
if(size % 2 == 0)
{/*то вводим заново*/}
0
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
22.12.2010, 17:26  [ТС] 16
спс огромное
0
22.12.2010, 17:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2010, 17:26
Помогаю со студенческими работами здесь

Посчитать сумму чисел на главной диагонали матрицы
задание состоит в том что нужно: заполнить таблицу строками m и столбцами n при помощи InputBox...

Посчитать сумму элементов на побочной диагонали матрицы
привет. какой цикл, чтобы посчитать сумму элементов на побочной диагонали ...

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

Посчитать сумму диагонали матрицы с верхнего правого угла до нижнего левого
дана матрица посчитать сумму диагонали с верхнего правого угла до нижнего левого


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

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