Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet83/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   79   80   81   82   83   84   85   86   ...   193
Bog'liq
Book-qtC


Глава 6. Статические и динамические матрицы
Задача 6.7.
Поменять местами элементы главной и побочной диагонали матри-
цы A(k, k).
Алгоритм решения задачи следующий: перебираем все строки матрицы (цикл
по переменной i от 0 до k −1 в тексте программы), и в каждой строке меняем ме-
стами элементы, расположенные на главной и побочной диагоналях (в i-й строке
надо поменять местами элементы A[i][i] и А[i][k-i-1]). Текст программы с
комментариями приведён далее.
#include 
using namespace s t d ;
i n t main ( )
{
i n t i , j , k ;
double b , ∗ ∗ a ;
cout<<" k = " ; //Ввод размера матрицы.
c i n >>k ;
a=new double ∗ [ k ] ; //Создаём динамическую матрицу
f o r ( i =0; i a [ i ]=new double [ k ] ;
cout<<"Ввод элементов матрицы A "<f o r ( i =0; i f o r ( j =0; j c i n >>a [ i ] [ j ] ;
f o r ( i =0; i { //В каждой строке обмен между элементами, лежащими на главной и побочной диагоналях.
b=a [ i ] [ i ] ;
a [ i ] [ i ]= a [ i ] [ k−1− i ] ;
a [ i ] [ k−1− i ]=b ;
}
cout<<"Преобразованная матрица A "<f o r ( i =0; i f o r ( j =0; j cout<}
Задача 6.8.
Заполнить матрицу A(6, 6) числами от 1 до 36 следующим образом:








1
2
3
4
5
6
12
11
10
9
8
7
13
14
15
16
17
18
24
23
22
21
20
19
25
26
27
28
29
30
36
35
34
33
32
31








Последовательно построчно заполняем матрицу возрастающей арифметиче-
ской последовательностью 1, 2, 3, . . ., 36. Чётные строки заполняем от нулевого
элемента к последнему, а нечётные — от последнего к нулевому. Текст програм-
мы приведён далее.
#include 
using namespace s t d ;
i n t main ( i n t argc , char ∗∗ a r g v )
{
i n t ∗∗ a , n=6 ,k=0 , i , j ;
a=new i n t ∗ [ n ] ; //Выделяем память для хранения матрицы
f o r ( i =0; i a [ i ]=new i n t [ n ] ;
f o r ( i =0; i i f ( i %2==0) //Строки с чётными номерами заполняем возрастающей последовательностью
f o r ( j =0; j a [ i ] [ j ]=++k ;
Программирование на языке С++ в среде Qt Creator


6.4. Решение некоторых задач линейной алгебры
197
e l s e //Строки с нечётными номерами заполняем возрастающей последовательностью чисел
f o r ( j=n
−1; j >=0; j −−) //справа налево
a [ i ] [ j ]=++k ;
cout<<"Вывод матрицы A "<f o r ( i =0; i f o r ( j =0; j cout<return 0 ;
}
6.4
Решение некоторых задач линейной алгебры
В этом параграфе рассмотрим использование матриц при решении таких за-
дач линейной алгебры, как сложение, вычитание и умножение матриц, решение
систем линейных алгебраических уравнений, вычисление определителя и обрат-
ной матрицы.
Задача 6.9.
Заданы четыре матрицы вещественных чисел A(N, M), B(N, M),
C(M, N ), D(M, N ). Вычислить матрицу C = ((A + B)(C − D))
2
.
Суммой (разностью) матриц одинаковой размерности A и B называется мат-
рица C, элементы которой получаются сложением C
i,j
= A
i,j
+ B
i,j
(вычитанием
C
i,j
= A
i,j
− B
i,j
) соответствующих элементов исходных матриц.
Напомним алгоритм умножения матриц на примере
0
@
a
0
,0
a
0
,1
a
0
,2
a
1
,0
a
1
,1
a
1
,2
a
2
,0
a
2
,1
a
2
,2
1
A
·
0
@
b
0
,0
b
0
,1
b
1
,0
b
1
,1
b
2
,0
b
2
,1
1
A
Воспользовавшись правилом «строка на столбец», получим матрицу:
0
@
c
0
,0
c
0
,1
c
1
,0
c
1
,1
c
2
,0
c
2
,1
1
A
=
0
@
a
0
,0
· b
0
,0
+ a
0
,1
· b
1
,0
+ a
0
,2
· b
2
,0
a
0
,0
· b
0
,1
+ a
0
,1
· b
1
,1
+ a
0
,2
· b
2
,1
a
1
,0
· b
0
,0
+ a
1
,1
· b
1
,2
+ a
1
,2
· b
2
,1
a
1
,0
· b
0
,1
+ a
1
,1
· b
1
,1
+ a
1
,2
· b
2
,1
a
2
,0
· b
0
,0
+ a
2
,1
· b
1
,0
+ a
2
,2
· b
2
,0
a
2
,0
· b
0
,1
+ a
2
,1
· b
1
,1
+ a
2
,2
· b
2
,1
1
A
Произведением матриц A(N, M) и B(M, L) является матрица C(N, L), каж-
дый элемент которой C
i,j
вычисляется по формуле:
C
i,j
=
M −1
P
k=0
A
i,k
B
k,j
, где i = 0, N − 1 и j = 0, L − 1.
Операция умножения имеет смысл только в том случае, если количество
строк левой матрицы совпадает с количеством столбцов правой. Кроме того,
A · B 6= B · A.
При решении задачи будем использовать динамические матрицы и двойные
указатели. Напишем следующие функции.
• float **sum_m(float **A, float **B, int N, int M) — функция фор-
мирует матрицу, которая является суммой двух матриц. Здесь A, B — ука-
затели на исходные матрицы, N, M — количество строк и столбцов матриц,
функция возвращает указатель на сформированную матрицу, которая яв-
ляется суммой двух матриц A и B.
• float **minus_m(float **A, float **B, int N, int M) — функция фор-
мирует матрицу, которая является разностью двух матриц. Здесь A, B —
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


198
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   79   80   81   82   83   84   85   86   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish