Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование C++.Помогите решить пожалуйста

sS Ss Ученик (106), закрыт 1 год назад
Дана квадратная матрица порядка n. Если среди элементов главной диагонали будут элементы равные нулю или кратные 2, то найти сумму элементов побочной диагонали. И поменять элементы главной диагонали на первую строку матрицы
Лучший ответ
Двоечник Обыкновенный Высший разум (102238) 2 года назад
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

unsigned set_size()
{
unsigned s;
do
{
cin >> s;
if(!s) cerr << "Введите число, большее нуля: ";
} while(!s);
return s;
}

int main()
{
const unsigned n = set_size(); // задаём значение n
int A[n][n];
// генерируем значения элементов Матрицы
srand(time(NULL));
for(int x = 0; x < n; x++)
{
for(int y = 0; y < n; y++)
{
A[x][y] = ( rand() % 31 ) - 15; // числа от -15 до 15
cout << A[x][y] << '\t'; // отображаем значение
}
cout << endl;
}
cout << endl;

// для поиска нуля или числа, кратного двум
bool find = false;
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
if(A[i][j] == 0 || ( ( A[i][j] % 2 ) == 0 ))
{
find = true;
i = n;
break;
}
if(find)
{
int sum_pob = 0; // для поиска суммы побочных элементов
for(int x = 0; x < n; x++)
sum_pob += A[x][n - 1 - x];
cout << "Сумма элементов побочной диагонали = ";
cout << sum_pob << '.' << endl << endl;

// меняем элементы главной диагонали на первую строку
for(int x = 0; x < n; x++)
A[x][x] = A[0][x];
// печатаем матрицу
for(int x = 0; x < n; x++)
{
for(int y = 0; y < n; y++)
cout << A[x][y] << '\t';
cout << endl;
}
cout << endl;
}
else
{
cout << "Нет элементов, равных нулю и кратных двум." << endl;
}

return 0;
}
Остальные ответы
Евгений Высочин Просветленный (37967) 2 года назад
...и если среди элементов побочной диагонали найдётся ответ предыдущей задачи, то умножить главную диагональ на побочную, разделить сумму всех столбцов на сумму всех строк, отразить верхний треугольник матрицы на нижний, разделить элементы, которые выше побочной диагонали, на максимум матрицы, умножить матрицу на последний столбец, первый столбец поменять на сумму всех диагоналей, обнулить все элементы матрицы, написать комментарии ко всем строкам исходного кода, разослать это решение всем студентам, которые учатся в одной группе с автором вопроса.

Уффффффф, кажись всё +_-
Victor Surozhtsev Просветленный (34102) 2 года назад
В таких вопросах мне всегда невдомёк - откуда берётся эта самая матрица, как описывается (двумерным массивом размера n×n или одномерным длины n²) и к чему относится последнее предложение? То есть при выполнении некого условия нужно вычислить некую сумму и поменять элементы, или же при выполнении этого условия нужно вычислить ту самую сумму, после чего невзирая на выполнение условия ещё и поменять элементы? Да и условие в чём состоит - если в главной диагонали есть чётные элементы, среди которых могут быть и нули, то вычисляем сумму? Если их нет, то не вычисляем. А если один такой элемент, то вычисляем или не вычисляем, так как один единственный элемент (единственное число !) - это не элементы (множественное число !)?
Вот это всё надо прояснить, иначе за такую задачу даже и браться не стóит!..
Похожие вопросы