Прием металлолома с выездом в Москве.

Security Teams



:::
  Ответ в темуСоздание новой темыСоздание опроса

> функция нахождения суммы диагональных элементов, ... квадратной матрицы
S@B@K@
Дата 12.06.2007 - 23:35
Цитировать сообщение
Offline



Activist
**

Профиль
Группа: -users-
Сообщений: 122
Пользователь №: 34
Регистрация: 25.02.2005



Рейтинг:
(20%) X----


народ, помогите, пожалуйста.

нужно: разработать фунцию, которая считает сумму диагональных элементов квадратной матрицы и с ее помощью найти сумму диагональных элементов трех матриц.

вот до чего додумался


Код
#include <iostream>
#include <cstdlib>

using namespace std;
int sortirovka(int a, int b, int **q)
{
cout<<"Сумма диагоналей матрицы "<<a<<"x"<<b<<":\n";
int sum=0;
int sum1=0;
for (int i=0; i<a; i++)
for (int j=0; j<b; j++)
{
if(i=j)
{
sum+=q[i][j];
}

}

for (int i=0; i<a; i++)
for (int j=0; j<b; j++)
{
if(a==i+j)
{sum1+=q[i][j];
}
}

int u;
u=sum+sum1;
cout<<u;
}

main()
{

//----------- задаем элементы массива явно
int a[2][2]={{3, 2},
{26, 74}};
// вывод исходной матрицы
cout<<"Исходная Матрица 2x2:";
for (int i=0; i<2; i++)
{
cout<<"\n";
for (int j=0; j<2; j++)
cout<<a[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *k[2];
for(int i=0;i<2;i++)
k[i]=& a[i][0];

cout<<"\n\n";

sortirovka (2, 2, k); // обращение к функции
cout<<"\n\n";



//----------- задаем элементы массива явно
int c[4][4]={{65, -3, 24, 69},
{74, 85, -49, 5},
{47, -87, 55, -7},
{62, -88, 75, 99}};
// вывод исходной матрицы
cout<<"Исходная Матрица 4x4:";
for (int i=0; i<4; i++)
{
cout<<"\n";
for (int j=0; j<4; j++)
cout<<c[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *p[4];
for(int i=0;i<4;i++)
p[i]=& c[i][0];

cout<<"\n\n";

sortirovka (4, 4, p); // обращение к функции

cout<<"\n\n";

//--------- задаем элементы массива явно
int b[6][6]={{25, 65, 47, 5, 8, 63},
{-4, 3, -9, 52, 7, 3},
{7, 66, 89, 20, 38, 4},
{24, 85, 98, 65, 23, 45},
{3, 9, 4, 25, 40, 403},
{54, 35, 76, 98, 59, 4}};
// вывод исходной матрицы
cout<<"Исходная Матрица 6x6:";
for (int i=0; i<6; i++)
{
cout<<"\n";
for (int j=0; j<6; j++)
cout<<b[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *l[6];
for(int i=0;i<6;i++)
l[i]=& b[i][0];

cout<<"\n\n";

sortirovka (6, 6, l); // обращение к функции

cout<<"\n\n";



 return EXIT_SUCCESS; // задержка экрана
}


--------------------
Пиво - это еще одно докозательство того, что Господь любит нас и хочет, чтоб мы были счастливы.
(с) Бенжамин Франклин
PMICQ
Top
drmist
Дата 13.06.2007 - 09:09
Цитировать сообщение
Offline



Professional
*****

Профиль
Группа: -users-
Сообщений: 1165
Пользователь №: 222
Регистрация: 14.04.2005



Рейтинг:
(0%) -----


как-то больно сложно

Код
#define N 4

int get_sum(int* ar) {
 int i, sum = 0;
 for(i = 0; i < N; i++)
   sum += ar[i*(N + 1)]; // ar[i*N + i], если N или (N+1) кратно 2-м, умножение можно заменить на побитывый сдвиг
 return sum;
}

void main() {
 int ar[N][N];

 /*
   заполняем матрицу...
 */

 // считаем сумму
 int i, sum = 0;
 for(i = 0; i < N; i++)
   sum += ar[i][i];

 printf("Сумма диагональных элементов: %d\n", sum);

 // тоже самое вызовом функции
 printf("Сумма диагональных элементов (функция): %d\n", get_sum(&a));
}


ну и если изначально размер матрицы неизвестен - по анологии.


--------------------
Когда нельзя еще больше хочется...
PMСайт пользователя
Top
Zyama
Дата 13.06.2007 - 09:44
Цитировать сообщение
Offline



-Читер-
****

Профиль
Группа: -experts-
Сообщений: 419
Пользователь №: 70
Регистрация: 10.03.2005



Рейтинг:
(50%) XXX--


сложновато..
ты слишком сложно делаешь, вот немного откорректировал твой кусок, но по мне так половину екода можно выкинуть
Цитата

int sortirovka(int a, int **q)
{
cout<<"Сумма диагоналей матрицы "<<a<<"x"<<b<<":\n";
int sum=0;
for (int i=0; i<a; i++)
{
sum+=q[i][i];
}
sortirovka=sum;
}
          /* дано что матрица квадратная, так что нефиг вводить прямоугольную smile.gif) */

main()
{
int sum_all=0;//общая сумма
//----------- задаем элементы массива явно
int a[2][2]={{3, 2},
{26, 74}};
// вывод исходной матрицы
cout<<"Исходная Матрица 2x2:";
for (int i=0; i<2; i++)
{
cout<<"\n";
for (int j=0; j<2; j++)
cout<<a[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *k[2];
for(int i=0;i<2;i++)
k[i]=& a[i][0];

cout<<"\n\n";

sum_all+=sortirovka (2, k); // обращение к функции

cout<<"\n\n";



//----------- задаем элементы массива явно
int c[4][4]={{65, -3, 24, 69},
{74, 85, -49, 5},
{47, -87, 55, -7},
{62, -88, 75, 99}};
// вывод исходной матрицы
cout<<"Исходная Матрица 4x4:";
for (int i=0; i<4; i++)
{
cout<<"\n";
for (int j=0; j<4; j++)
cout<<c[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *p[4];
for(int i=0;i<4;i++)
p[i]=& c[i][0];

cout<<"\n\n";

sum_all+=sortirovka (4, p); // обращение к функции

cout<<"\n\n";

//--------- задаем элементы массива явно
int b[6][6]={{25, 65, 47, 5, 8, 63},
{-4, 3, -9, 52, 7, 3},
{7, 66, 89, 20, 38, 4},
{24, 85, 98, 65, 23, 45},
{3, 9, 4, 25, 40, 403},
{54, 35, 76, 98, 59, 4}};
// вывод исходной матрицы
cout<<"Исходная Матрица 6x6:";
for (int i=0; i<6; i++)
{
cout<<"\n";
for (int j=0; j<6; j++)
cout<<b[i][j]<<" ";
}
// понадобится для дальнейшего обращения к функции
int *l[6];
for(int i=0;i<6;i++)
l[i]=& b[i][0];

cout<<"\n\n";

sum_all+=sortirovka (6, l); // обращение к функции

cout<<"\n\n";

cout<<"Сумма "<<Sum_All;

return EXIT_SUCCESS; // задержка экрана
}
PMICQYahoo
Top
Zyama
Дата 13.06.2007 - 09:45
Цитировать сообщение
Offline



-Читер-
****

Профиль
Группа: -experts-
Сообщений: 419
Пользователь №: 70
Регистрация: 10.03.2005



Рейтинг:
(50%) XXX--


не проверял так что могут быть опечатки...
PMICQYahoo
Top
S@B@K@
Дата 14.06.2007 - 00:23
Цитировать сообщение
Offline



Activist
**

Профиль
Группа: -users-
Сообщений: 122
Пользователь №: 34
Регистрация: 25.02.2005



Рейтинг:
(20%) X----


Zyama
drmist

пасиба! smile.gif


--------------------
Пиво - это еще одно докозательство того, что Господь любит нас и хочет, чтоб мы были счастливы.
(с) Бенжамин Франклин
PMICQ
Top

Опции темы Ответ в темуСоздание новой темыСоздание опроса