С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Otar4ik
3 / 3 / 0
Регистрация: 20.10.2013
Сообщений: 94
#1

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

29.06.2014, 22:03. Просмотров 283. Ответов 7
Метки нет (Все метки)

Найти среднее арифметическое положительных элементов главной и побочной диагоналей матрицы действительных чисел А(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;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2014, 22:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильно считает сумму побочной диагонали (C++):

не считает сумму элементов на побочной диагонали почему-то. - C++
/*14. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;stdio.h&gt; ...

не считает сумму ниже побочной диагонали, в чем ошибка? - C++
Вот сам код,где ошибка?:( #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;iomanip&gt; double **mass; int i,j,n,sum; using...

Функция неправильно считает сумму - C++
Функция mean() (определение стр.84-96,вызов ф-ции стр.42) неправильно считает сумму.Все функции до неё делают правильные...

Почему программа неправильно считает сумму? - C++
Вот задание: http://cs628818.vk.me/v628818636/23176/6LFbXBEOAPQ.jpg Вот код: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали - C++
Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали... Программу надо в С.

Найти сумму элементов каждой диагонали, параллельной побочной (начиная с одноэлементной диагонали A1,1) - C++
Matrix83. Дана квадратная матрица A порядка M. Найти сумму элементов каж- дой ее диагонали, параллельной побочной (начиная с одноэлементной...

7
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,934
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}
0
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,934
29.06.2014, 22:42 #3
Цитата Сообщение от Otar4ik Посмотреть сообщение
C++
1
sr = sum/kol;
А если kol равняется нулю? (См.рис.)
0
Миниатюры
Неправильно считает сумму побочной диагонали  
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)
0
Psilon
Master of Orion
Эксперт .NET
5913 / 4810 / 634
Регистрация: 10.07.2011
Сообщений: 14,409
Записей в блоге: 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 оно и выйдет.
0
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,934
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 {  /* ... */  }
0
Psilon
Master of Orion
Эксперт .NET
5913 / 4810 / 634
Регистрация: 10.07.2011
Сообщений: 14,409
Записей в блоге: 5
Завершенные тесты: 4
30.06.2014, 00:02 #7
Alex5, можно и так. Если в условии не оговорено, можно делать что угодно В пределах адекватного поведения.
0
Otar4ik
3 / 3 / 0
Регистрация: 20.10.2013
Сообщений: 94
30.06.2014, 18:23  [ТС] #8
Спасибо большое.
А вот насчёт нулевого элемента,сделаю себе заметку,если вдруг доп.задание дадут.
0
30.06.2014, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 18:23
Привет! Вот еще темы с ответами:

Неправильно считает сумму между первым и последним положительными элементами - C++
int min, i, n, sum=0, arr,i1,i2; // arr - массив целых чисел, максимальный размер 100 элементов cin &gt;&gt; n; for...

Неправильно считает сумму элементов массива, расположенных между первым и последним положительными элементами - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &lt;stdio.h&gt; #include &quot;locale.h&quot; using namespace std; ...

Найти сумму всех элементов главной диагонали матрицы, и сумму всех отрицательных элементов побочной диагонали - C++
15. Найти сумму всех элементов главной диагонали матрицы P(10*10) и сумму всех отрицательных элементов побочной диагонали.

Найти произведение элементов главной диагонали и сумму элементов побочной диагонали - C++
Не могу разобраться с задачей, помогите пожалуйста: 3. Найти произведение элементов главной диагонали и сумму элементов побочной...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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