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

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

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

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

25.04.2014, 16:12. Просмотров 649. Ответов 18
Метки нет (Все метки)

Не могу понять как решить задачу!
В матрице А [5,5] найти сумму повторяющихся элементов главной диагонали; если она (полученная сумма) делится на три, то заполнить главную диагональ нулями.

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

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

В квадратной матрице найти сумму элементов ниже главной диагонали - C++
В квадратной матрице найти сумму элементов ниже главной диагонали Надо программу на си++

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

В квадратной матрице найти сумму минимального и максимального элементов главной диагонали - C++
В квадратной матрице найти сумму минимального и максимального элементов главной диагонали. Добавлено через 3 часа 13 минут Помогите...

В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали - C++
Помогите пожалуйста, написать программу в с++. А то я чайник, ничего не понимаю... Соседями элемента А с индексом ij в матрице назовем...

В заданной квадратной матрице заменить минимальный элемент на 0, затем найти сумму элементов главной диагонали - C++
В матрице размерности 7 на 7 посчитать в каждом втором столбце заме- нить минимальный элемент нулем. Во вновь полученной...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
104 / 98 / 30
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
8 / 6 / 1
Регистрация: 11.11.2013
Сообщений: 75
25.04.2014, 17:06 #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Одинарного тебе не достаточно??!
Нет, мне все мало.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
может всё-таки условие должно быть i == j, нет?
Нет, i = j. Это условие из текста, написанного на русском языке, а не на с++. Ты этого не сообразил, ты мыслишь кодом? Купи себе хотя бы резиновую женщину\вибратор, ботаник.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
104 / 98 / 30
Регистрация: 01.07.2012
Сообщений: 277
Завершенные тесты: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 19:25
Привет! Вот еще темы с ответами:

В матрице определить сумму элементов, находящихся на главной диагонали - C++
1. В матрице размерами N*N (N не больше 10) определить сумму элементов, находящихся на главной диагонали. Матрицу сформировать из случайных...

В матрице посчитать сумму четных элементов выше главной диагонали - C++
Помогите пожалуйста!!! Задание такое: В матрице подсчитать сумму четных элементов выше главной диагонали, если она делится на 3,то...

Посчитать сумму элементов в матрице выше главной диагонали, включая и ее - C++
Дана матрица 3х3, нужно посчитать сумму элементов выше главное диагонали, включая диагональ #include &lt;stdio.h&gt; #include &lt;stdafx.h&gt; ...

В матрице размерами N*N (N =<10) определить сумму элементов, находящихся на главной диагонали - C++
1. В матрице размерами N*N (N не больше 10) определить сумму элементов, находящихся на главной диагонали. Матрицу сформировать из случайных...


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

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

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