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

В матрице найти сумму повторяющихся элементов главной диагонали - C++

Восстановить пароль Регистрация
 
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
25.04.2014, 16:12     В матрице найти сумму повторяющихся элементов главной диагонали #1
Не могу понять как решить задачу!
В матрице А [5,5] найти сумму повторяющихся элементов главной диагонали; если она (полученная сумма) делится на три, то заполнить главную диагональ нулями.

Добавлено через 5 часов 50 минут
Неужели никто не может решить?

Добавлено через 9 минут
Помогите малоопытному программисту в этом нелёгком деле!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2014, 16:12     В матрице найти сумму повторяющихся элементов главной диагонали
Посмотрите здесь:

Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали C++
C++ В матрице размерами N*N (N =<10) определить сумму элементов, находящихся на главной диагонали
В матрице определить сумму элементов, находящихся на главной диагонали C++
C++ В матрице посчитать сумму четных элементов выше главной диагонали
В квадратной матрице найти сумму элементов ниже главной диагонали C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ullaluna
 Аватар для Ullaluna
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
25.04.2014, 16:51     В матрице найти сумму повторяющихся элементов главной диагонали #2
Общий алгоритм примерно такой:

- матрица 5х5 - это двухмерный массив вида arr[i][j];
- в двойном цикле сравнивая i и j, находите элементы главной диагонали - это те элементы массива, у которых i = j;
- с каждый найденным элементом увеличиваем значение переменной полученная_сумма на значение этого элемента;
- наконец, делите на три;
- если делится, то все элементы массива, отвечающие условию i = j приравниваются к нулю:
arr[i][j] = 0;

Если у вас будут вопросы по написанному вами коду, то вам наверняка помогут. Писать код за вас, честно говоря, неправильно. Ведь это источник финансов для подрабатывающих отличников, некрасиво им мешать
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 270
Завершенные тесты: 1
25.04.2014, 16:53     В матрице найти сумму повторяющихся элементов главной диагонали #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int x[5][5];
int tmp;
bool f;
// Вводим матрицу
...
// Ищем сумму элементов
for(int i = 0; i<5; i++)
{
tmp = x[i][i]
for(int j = i+1; j < 5; j++)
{
if(x[i][i] == x[j][j]) tmp = tmp + x[i][i];
}
if(tmp!=x[i][i] && tmp % 3 == 0) f = 1; 
}
 
if(f)
{
for(int i = 0; i<5; i++)
{
x[i][i] = 0;
}
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.04.2014, 17:02     В матрице найти сумму повторяющихся элементов главной диагонали #4
Цитата Сообщение от Ullaluna Посмотреть сообщение
- в двойном цикле сравнивая i и j, находите элементы главной диагонали - это те элементы массива, у которых i = j;
А-ха-ха
А зачем же тебе понадобился для этой задачи двойной цикл??? Одинарного тебе не достаточно??!
Цитата Сообщение от Ullaluna Посмотреть сообщение
отвечающие условию i = j
может всё-таки условие должно быть i == j, нет?
Впрочем, как я уже сказал выше, двойного цикла тут вообще не нужно!

Добавлено через 1 минуту
Цитата Сообщение от Vaiz Посмотреть сообщение
if(x[i][i] == x[j][j]) tmp = tmp + x[i][i];
неверно!

Добавлено через 4 минуты
Цитата Сообщение от Nick96 Посмотреть сообщение
В матрице А [5,5] найти сумму повторяющихся элементов главной диагонали; если она (полученная сумма) делится на три, то заполнить главную диагональ нулями.
C++
1
2
3
4
5
6
7
8
9
10
int A[5][5];
for (int i=0; i<5; i++)
for (int j=0; j<5; j++)
A[i][j]=rand()%4;
int sum=0;
for (int i=0; i<5; i++)
  sum+=A[i][i];
if (sum%3==0)
  for (int i=0; i<5; i++)
    A[i][i]=0;
Ullaluna
 Аватар для Ullaluna
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
25.04.2014, 17:06     В матрице найти сумму повторяющихся элементов главной диагонали #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Одинарного тебе не достаточно??!
Нет, мне все мало.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
может всё-таки условие должно быть i == j, нет?
Нет, i = j. Это условие из текста, написанного на русском языке, а не на с++. Ты этого не сообразил, ты мыслишь кодом? Купи себе хотя бы резиновую женщину\вибратор, ботаник.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
25.04.2014, 17:45     В матрице найти сумму повторяющихся элементов главной диагонали #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int n=5;
int A[n][n];
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
A[i][j]=rand()%4;
int sum=0;
for (int i=0; i<n; i++){
  bool unique=true;
  for (int j=0; j<n && unique; j++)
    if (i!=j) unique=(a[i]!=a[j]);
  if (unique) sum+=A[i][i];
}
if (sum%3==0)
  for (int i=0; i<n; i++)
    A[i][i]=0;
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
25.04.2014, 21:06  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #7
Я недавно начал программировать. Можно целый код?

Добавлено через 3 минуты
Какие-то обрывки - мне вообще не понятно, что? куда? please

Добавлено через 58 минут
Коды не работают!!!

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, a[20][20];
    cout << "Введите число строк и столбцов: ";
    cin >> N;
    cout << "Input matrix A\n";
    for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
        cin >> a[i][j];
    cout << "matrix A\n";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
    system("pause");
    return 0;
}
Добавлено через 24 секунды
Это код матрицы. А дальше что?
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 270
Завершенные тесты: 1
25.04.2014, 22:49     В матрице найти сумму повторяющихся элементов главной диагонали #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вставьте этот код, от Kuzia domovenok перед system("pause");
После него можете выводить матрицу
C++
1
2
3
4
5
6
7
8
9
10
int sum=0;
for (int i=0; i<n; i++){
  bool unique=true;
  for (int j=0; j<n && unique; j++)
    if (i!=j) unique=(A[i]!=A[j]);
  if (unique) sum+=A[i][i];
}
if (sum%3==0)
  for (int i=0; i<n; i++)
    A[i][i]=0;
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 17:41  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #9
Видимо в коде есть ошибка, поскольку он считает и другие повторяющиеся элементы ( А НАДО ТОЛЬКО ГЛАВНОЙ ДИАГОНАЛИ). Например, в этой матрице
611
111
116
с++ пишет, что сумма = 13 ( а не 12).
ОЧЕНЬ ПРОШУ ПОМОГИТЕ ИСПРАВИТЬ ОШИБКУ!!!

Добавлено через 2 минуты
То есть находится вся сумма элементов на главной диагонали, а надо, чтобы учитывалась сумма повторяющихся элементов на главной диагонали.

Добавлено через 1 минуту
Например, в той же матрице
611
111
116
Сумма должна быть = 12

Добавлено через 39 секунд
Сам код
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
int i, j, N, a[20][20];
cout << "Введите число строк и столбцов: ";
cin >> N;// ввод количества строк и столбцов
cout << "Введите матрицу\n";
for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
cin >> a[i][j];
cout << "Матрица \n";// вывод матрицы
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << a[i][j] << "\t";
cout << endl;
}
int sum = 0;
for (int i = 0; i<N; i++)
{
bool unique = true;
for (int j = 0; j<N && unique; j++)
if (i != j) unique = (a[i] != a[j]);
if (unique) sum += a[i][i];
}
if (sum % 3 == 0)
for (int i = 0; i<N; i++)
a[i][i] = 0;
cout << "Сумма повторяющихся элементов главной диагонали = " << sum << "\n";
if (sum % 3 != 0)
{
cout << "Сумма повторяющихся элементов главной диагонали не делится на 3 \n";
system("pause");
return 0;
}
cout << " Матрица приобретает вид\n";
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
cout << a[i][j] << "\t";
cout << endl;
}
system("pause");
return 0;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.04.2014, 18:53     В матрице найти сумму повторяющихся элементов главной диагонали #10
Цитата Сообщение от Vaiz Посмотреть сообщение
if (i!=j) unique=(A[i]!=A[j]);
вот эта строчка вообще полный бред, блин! У тебя двумерный массив с элементами на диагонали! Значит надо обращаться к ним как
C++
1
 if (i!=j) unique=(A[i][i]!=A[j][j]);
Добавлено через 1 минуту
а, ну да, это ж я так криво написал... ну дык всё равно смотреть надо, что пишут! и своей головой думать!
а-ха-ха!
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 18:57  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #11
Я поменял строчки - ещё хуже стало!
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.04.2014, 19:05     В матрице найти сумму повторяющихся элементов главной диагонали #12
Nick96, какие строчки? ты ответ мой прочёл?
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 19:18  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #13
Заменил эту if (i!=j) unique=(A[i]!=A[j]);
на эту
if (i!=j) unique=(A[i][i]!=A[j][j]);

Добавлено через 9 минут
Может дело не в них?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
27.04.2014, 19:19     В матрице найти сумму повторяющихся элементов главной диагонали #14
и что конкретно стало хуже? Какие ошибки? ответ неверный или не компилируется? Что может быть хуже неверного ответа?!
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 19:25  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #15
Ответ вообще неправильный!
Может проблема в этой строке
if (unique) sum += a[i][i];
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 270
Завершенные тесты: 1
27.04.2014, 21:28     В матрице найти сумму повторяющихся элементов главной диагонали #16
Вот полный код, работает в случае если только одно число повторяется.
Т.е. в матрице

1 0 0 0
0 1 0 0
0 0 3 0
0 0 0 3

сумма будет равна 2.

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
53
54
55
56
57
58
59
60
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, a[20][20];
    cout << "Введите число строк и столбцов: ";
    cin >> N;// ввод количества строк и столбцов
    cout << "Введите матрицу\n";
    for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
        cin >> a[i][j];
    cout << "Матрица \n";// вывод матрицы
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
 
    int sum = 0;
    for (i = 0; i<N; i++)
    {
        sum = a[i][i];
        for (j = i + 1; j < N; j++)
        {
            if (a[i][i] == a[j][j])
            {
                sum += a[i][i];
            }
        }
        if (sum != a[i][i]) break;
    }
 
    if (i == N) cout << "Повторяющихся элементов нет\n";
    else
    {
        cout << "Сумма повторяющихся элементов главной диагонали = " << sum << "\n";
        if (sum % 3 == 0)
        for (int i = 0; i < N; i++)
            a[i][i] = 0;
 
        if (sum % 3 != 0)
        {
            cout << "Сумма повторяющихся элементов главной диагонали не делится на 3 \n";
            system("pause");
            return 0;
        }
        cout << " Матрица приобретает вид\n";
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < N; j++)
                cout << a[i][j] << "\t";
            cout << endl;
        }
    }
    system("pause");
    return 0;
}
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 22:13  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #17
А как сделать так чтобы
1 0 0 0
0 1 0 0
0 0 3 0
0 0 0 3
сума = 8?
Vaiz
 Аватар для Vaiz
98 / 92 / 29
Регистрация: 01.07.2012
Сообщений: 270
Завершенные тесты: 1
27.04.2014, 22:31     В матрице найти сумму повторяющихся элементов главной диагонали #18
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "RUS");
    int i, j, N, a[20][20];
    cout << "Введите число строк и столбцов: ";
    cin >> N;// ввод количества строк и столбцов
    cout << "Введите матрицу\n";
    for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
        cin >> a[i][j];
    cout << "Матрица \n";// вывод матрицы
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
 
    int sum = 0, sum1 = 0;
    bool unique[20];
    for (i = 0; i < N; i++) unique[i] = 1;
    for (i = 0; i < N; i++)
    {
        sum1 = a[i][i];
        if (unique[i])
        {
            for (j = i + 1; j < N; j++)
            {
                if (a[i][i] == a[j][j])
                {
                    sum1 += a[i][i];
                    unique[j] = 0;
                }
            }
        }
        if (sum1 != a[i][i]) sum += sum1;
    }   
 
    if (sum == 0) cout << "Повторяющихся элементов нет\n";
    else
    {
        cout << "Сумма повторяющихся элементов главной диагонали = " << sum << "\n";
        if (sum % 3 == 0)
        for (int i = 0; i < N; i++)
            a[i][i] = 0;
 
        if (sum % 3 != 0)
        {
            cout << "Сумма повторяющихся элементов главной диагонали не делится на 3 \n";
            system("pause");
            return 0;
        }
        cout << " Матрица приобретает вид\n";
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < N; j++)
                cout << a[i][j] << "\t";
            cout << endl;
        }
    }
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 22:37     В матрице найти сумму повторяющихся элементов главной диагонали
Еще ссылки по теме:

Наидите сумму всех элементов, расположенных на главной диагонали и ниже ее в матрице C++
C++ В квадратной матрице найти сумму минимального и максимального элементов главной диагонали
C++ В матрице размером n х n найти сумму элементов, лежащих ниже главной диагонали, и произведение элементов, леж

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

Или воспользуйтесь поиском по форуму:
Nick96
0 / 0 / 0
Регистрация: 24.04.2014
Сообщений: 98
27.04.2014, 22:37  [ТС]     В матрице найти сумму повторяющихся элементов главной диагонали #19
ЧУВАК!!! ТЫ ПРОСТО СУПЕР!!! СПАСИБО ТЕБЕ!!!
Yandex
Объявления
27.04.2014, 22:37     В матрице найти сумму повторяющихся элементов главной диагонали
Ответ Создать тему
Опции темы

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