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

Неправильно считает сумму побочной диагонали - C++

Восстановить пароль Регистрация
 
Otar4ik
3 / 3 / 0
Регистрация: 20.10.2013
Сообщений: 94
29.06.2014, 22:03     Неправильно считает сумму побочной диагонали #1
Найти среднее арифметическое положительных элементов главной и побочной диагоналей матрицы действительных чисел А(5Х5).

Главную находит без проблем,а вот побочная,хромает...если я решаю по формуле (j=n-i+1 & matr[i][j]>0) то он просто выводит матрицу и всё,если решаю по (j-i+1 & matr[i][j]>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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
     const int n = 5, m = 5;
    double sum=0,sum1=0;
    double sr=0,sr1=0;
     int kol=0;
     int kol1=0;
  double matr[n][m];
  for(int i = 0; i < n; ++i){
    for(int j = 0; j < m; ++j){
      matr[i][j] = static_cast<double>(rand() % 100) / 10;
      cout <<setw(7) <<matr[i][j] << ' ';
    }
    cout << "\n\n";
  }
  for(int i = 0; i < n; ++i){
    for(int j = 0; j < m; ++j){
if(i==j & matr[i][j]>0)
{
    kol++;
    sum+=matr[i][j];
}
if (j-i+1 & matr[i][j]>0)
///if (j=n-i+1 & matr[i][j]>0)
{
kol1++;
    sum1+=matr[i][j];
}
    }
  }
  sr = sum/kol;
  sr1= sum1/kol1;
  cout<<"Среднее арифметическое положительных чисел главной диагонали равно : "<<sr<<endl;
  cout<<"Среднее арифметическое положительных чисел побочной диагонали равно : "<<sr1<<endl;
  system("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2014, 22:03     Неправильно считает сумму побочной диагонали
Посмотрите здесь:

Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали C++
не считает сумму элементов на побочной диагонали почему-то. C++
C++ Найти произведение элементов главной диагонали и сумму элементов побочной диагонали
не считает сумму ниже побочной диагонали, в чем ошибка? C++
C++ Подсчитать сумму элементов, расположенных на побочной диагонали
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
29.06.2014, 22:35     Неправильно считает сумму побочной диагонали #2
Логическое И обозначается &&
Операция & это побитовая операция ( например 1 & 1 == 1; 2 & 4 == 0; 3 & 8 == 0 ).

Добавлено через 3 минуты
Если n=3, какие элементы принадлежат побочной диагонали?

http://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{bmatrix}a[0][0] & a[0][1] & a[0][2]\\ a[1][0] & a[1][1] & a[1][2]\\ a[2][0] & a[2][1] & a[2][2]\end{bmatrix}
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
29.06.2014, 22:42     Неправильно считает сумму побочной диагонали #3
Цитата Сообщение от Otar4ik Посмотреть сообщение
C++
1
sr = sum/kol;
А если kol равняется нулю? (См.рис.)
Миниатюры
Неправильно считает сумму побочной диагонали  
Iriini
265 / 191 / 46
Регистрация: 16.06.2014
Сообщений: 424
29.06.2014, 22:51     Неправильно считает сумму побочной диагонали #4
if (j-i+1 & matr[i][j]>0)
if (j==n-i+1 && matr[i][j]>0)
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
29.06.2014, 23:11     Неправильно считает сумму побочной диагонали #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
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int n = 5;
    double matr[n][n];
    for (int i = 0; i < n; ++i){
        for (int j = 0; j < n; ++j){
            matr[i][j] = static_cast<double>(rand() % 100) / 10;
            cout << setw(7) << matr[i][j] << ' ';
        }
        cout << "\n\n";
    }
 
    double sumglav = 0, sumpoboch = 0;
    int kolglav = 0, kolpoboch = 0;
    for (int i = 0; i < n; ++i){
        if (matr[i][i]>0)
        {
            sumglav += matr[i][i];
            kolglav++;
        }
        if (matr[i][n - i - 1] > 0)
        {
            sumpoboch += matr[i][n - i - 1];
            kolpoboch++;
        }
    }
 
    cout << "Среднее арифметическое положительных чисел главной диагонали равно : " << sumglav/kolglav << endl;
    cout << "Среднее арифметическое положительных чисел побочной диагонали равно : " << sumpoboch/kolpoboch << endl;
    system("pause");
    return 0;
}
Добавлено через 1 минуту
Alex5, если 0, то NaN, логично же. При делении 0 на 0 оно и выйдет.
Alex5
881 / 616 / 81
Регистрация: 12.04.2010
Сообщений: 1,552
29.06.2014, 23:22     Неправильно считает сумму побочной диагонали #6
Цитата Сообщение от Psilon Посмотреть сообщение
Alex5, если 0, то NaN, логично же. При делении 0 на 0 оно и выйдет.
Psilon, ну так можно более явно написать:

C++
1
2
3
4
5
    int kol=0; // количество положительных чисел главной диагонали 
    // .. 
    if( 0 == kol )
        cout << " \n Положительных чисел на главной диагонали нет. \n";
    else {  /* ... */  }
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
30.06.2014, 00:02     Неправильно считает сумму побочной диагонали #7
Alex5, можно и так. Если в условии не оговорено, можно делать что угодно В пределах адекватного поведения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 18:23     Неправильно считает сумму побочной диагонали
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Otar4ik
3 / 3 / 0
Регистрация: 20.10.2013
Сообщений: 94
30.06.2014, 18:23  [ТС]     Неправильно считает сумму побочной диагонали #8
Спасибо большое.
А вот насчёт нулевого элемента,сделаю себе заметку,если вдруг доп.задание дадут.
Yandex
Объявления
30.06.2014, 18:23     Неправильно считает сумму побочной диагонали
Ответ Создать тему
Опции темы

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