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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
#1

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

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

задаем в файл банально вот такую матрицу
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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 13:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посчитать сумму чисел по диагонали матрицы (C++):

Посчитать сумму элементов главной диагонали матрицы - C++
Почему когда я хочу посчитать сумму элементов главной диагонали матрицы 4*4 , ответ неправильный? {for (int i = 0; i &lt; 4; i++){ for...

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

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

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

Посчитать сумму чисел матрицы в КАЖДОЙ чётной и нечётной строке - C++
Помогите пожалуйста, сегодня лабу по информатике сдавать!!! Нужно составить алгоритм, который будет считать сумму чисел матрицы в КАЖДОЙ...

Найти сумму дополнительных чисел побочной диагонали матрицы - C++
Всем привет Ну для начала хотелось бы сказать, что это лучший сайт и форум который я когда-либо видел и всем кто мне помагал и остальным...

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

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

Найти сумму каждой диагонали матрицы выше главной диагонали - C++
Дана матрица n*m, найти сумму каждой диагонали отдельно, выше главной диагонали. Не могу понять задачу помогите пожалуйста.

Посчитать среднее геометрическое главной диагонали матрицы - C++
Посчитать среднегеометрическое главной диагонали. с++ ПОМОГИТЕ НАПИСАТЬ ПРОГРАММУ

Прочитать матрицу из файла и посчитать сумму элементов на главной диагонали - C++
Двухмерные массивы, прочитать их из файла. Посчитать сумму элементов по главной диагонале.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.12.2010, 09:20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru