![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
xazard |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Вопрос жизни и смерти!!!
Дана целочисленная квадратная матрица. Определить: 1) ... 2) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы. Кто-нибудь исправьте последние две функции, по каким индексам суммировать. Пожалуйста приведите код... #include <iostream.h>
#include <math.h>
#define SIZE 3 // размер матрицы
// прототипы функций
int Sum (int matrix[SIZE][SIZE]); // суммирует неотрицательных столбцов
int Summ (int matrix[SIZE][SIZE]); // суммирует элементы диагоналей выше побочной диагонали
int Summ1 (int matrix[SIZE][SIZE]); //суммирует элементы диагоналей ниже побочной диагонали
int main () {
// забиваем матрицу элементами
int matrix[SIZE][SIZE];
for (int i=0; i<SIZE; i++){
for (int j=0; j<SIZE; j++){
cin >> matrix[i][j];
}
}
cout <<"Сумма элементов столбцов без отриц. элементво: " << (Sum(matrix)) << endl;
if (Summ(matrix)<Summ1(matrix))
cout <<"Минимальная сумма: " << (Summ(matrix))<< endl;
else cout <<"Минимальная сумма: " << (Summ1(matrix))<< endl;
return 0;
}
// сумма элементов столбцов без отрц. элементов
int Sum (int matrix[SIZE][SIZE]) {
int sum=0; // общая сумма
int sum2; // сумма одного столбца
bool N=false;
for (int j=0; j<(SIZE); j++) {
N=false;
sum2=0;
for (int i=0; i<(SIZE); i++) {
if (matrix[i][j]<0) N=true;
sum2 += matrix[i][j];
}
if (N) sum2 = 0;
else sum += sum2;
}
return sum;
}
// сумма диагоналей выше побочной диагонали (по модулю)
int Summ(int matrix[SIZE][SIZE]) {
int summ=0;
int minimum=fabs(matrix[1][1]);
for (int j=1;j<(SIZE-1);j++){
summ=0;
for (int i=1;i<(SIZE-j);i++){
summ+=fabs(matrix[i][SIZE-j-i+1]);
cout << summ << " ";
}
if (minimum>summ) minimum=summ;
}
return minimum;
}
// сумма диагоналей ниже побочной диагонали (по модулю)
int Summ1(int matrix[SIZE][SIZE]) {
int summ=0;
int minimum1=fabs(matrix[1][1]);
for (int j=2;j<SIZE;j++){
summ=0;
for (int i=j;i<SIZE;i++){
summ+=fabs(matrix[i][SIZE-i+j]);
cout << summ << " ";
}
if (minimum1>summ) minimum1=summ;
}
return minimum1;
}
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
// Выше побочной диагонали
int Summ(int matrix[SIZE][SIZE]) {
int summ = 0;
int minimum = fabs(matrix[0][0]);
cout << "up" << endl;
for(int i = 0; i < SIZE - 1; ++i) {
summ = 0;
for(int j = 0; j <= i; ++j) summ += fabs(matrix[i][j]);
cout << summ << " ";
if(minimum > summ) minimum = summ;
}
cout << endl;
return minimum;
}
// Ниже побочной диагонали
int Summ1(int matrix[SIZE][SIZE]) {
int summ=0;
int minimum = matrix[SIZE-1][SIZE-1];
cout << "down" << endl;
for (int j=0;j<SIZE-1;j++){
summ=0;
for (int i = j; i < SIZE-1; i++) {
summ += fabs(matrix[i][SIZE-i+j-1]);
}
cout << summ << " ";
if(minimum > summ) minimum = summ;
}
cout << endl;
return minimum;
}
Вызывать так: ...
int min_up, min_down;
if((min_up = Summ(matrix)) < (min_down = Summ1(matrix)))
cout <<"Минимальная сумма: " << min_up << endl;
else cout <<"Минимальная сумма: " << min_down << endl;
...
|
![]() ![]() |
![]() |
Текстовая версия | 1.08.2025 17:12 |