5В011100-«Информатика» мамандығына арналған «Есеп шығару әдістемесі»


Матрицаның барлық элементтерін өңдейтін алгоритмдер



бет17/56
Дата18.12.2021
өлшемі1,37 Mb.
#102523
түріБағдарламасы
1   ...   13   14   15   16   17   18   19   20   ...   56
Байланысты:
Есеп шығару әдістемесі

Матрицаның барлық элементтерін өңдейтін алгоритмдер

2-мысал. Нақты сандардан тұратын a4,6 матрицасы берілген. Мынадай z=p1/|p2| өрнекті есептеу керек, мұндағы P1 и P2 – сәйкесінше алынған матрицаның оң және теріс элементтерінің көбейтіндісі.

/* a[4][6] матрицасы берiлген. z=p1/|p2| есептеу керек, p1 және p2 – матрицаның оң және терiс элементтерiнiң көбейтiндiсi */

#include

#include

#include

void line()

{printf("------------------------------\n"); return;}

main ()


{static int a[4][6]={{5,-11,4,-2,5,6},{3,3,-12,-5,7,8},{2,3,-3,14,-9,-3},{-9,3,-6,14,9,-3}};

int i,j; float p1, p2, z;

printf("Берiлген матрица :\n"); line();

for (i=0; i<4; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);printf("\n");}

line();

/* Матрицаны өңдеу */

p1 = 1;p2 = 1;

for (i=0; i<4; i++)

for (j=0; j<6; j ++)

{if (a[i][j]>0) p1 = p1*a[i][j];

if (a[i][j]<0) p2 = p2*a[i][j];}

z = p1/abs(p2);

printf(" z = %f\n",z); line();getch();}

Матрица мынадай түрде беріледі:



А(0,0)

A(0,1)

A(0,2)

A(0,3) ...

A(0, j)



A(0,n-1)

A(1, 0)

A(1,1)

A(1, 2)

A(1, 3) ...

A(1, j)



A(1, n-1)

A(2, 0)

A(2, 1)

A(2,2)

A(2, 3) ...

A(2, j)



A(2, n-1)

A(3, 0)

A(3, 1

A(3, 2

A(3, 3...

A(3, j)



A(3, n-1)











A(i, j)

… …

A(n-2, 0)

A(n-2, 1)

A(n-2, 2)

A(n-2, 3) ...

A(n-2, j)

… A(n-2, n)

A(n-1, 0)

A(n-1, 1)

A(n-1, 2)

A(n-1, 3) ...

A(n-1, j)

… A(n-1, n-1)

Бас диагональ элементтері белгісі: i = j

Бас диагональдан жоғары тұрған элементтері белгісі: i < j

Бас диагональдан төмен тұрған элементтері белгісі: i > j

Қосалқы диагональ элементтері белгісі: i+j = n-1

Қосалқы диагональдан жоғары элементтер белгісі: i+j < n-1

Қосалқы диагональдан төмен элементтер белгісі: j+j > n-1

3-мысал. Бүтін сандардан тұратын квадрат b5,5 матрицасы берілген. Оның бас диагоналының сол жағында және оң жағында орналасқан нөлге тең элементтері санын анықтап, солардың айырмасының модулін табу керек.

Мынадай белгілеулер енгізейік:

L1 – бас диагональдың сол жағында (төменінде) орналасқан элементтер саны;

L2 – бас диагональдың оң жағында (жоғарысында) орналасқан элементтер саны;

L= |L1-L2| – солардың айырмасы модулі.

#include

#include

#include

void line()

{printf("-------------------------\n"); return;}

main ()

{static int b[5][5]={{5,0,0,0,0}, {0,3,12,0,0}, {0,33,13,14,0}, {0,23,0,14,0}, {35,0,13,14,9},};

int i,j;

int L1,L2,L;

printf("Берiлген матрица :\n"); line();

for (i=0; i<5; i++)

{for (j=0; j<5; j ++)

printf(" %3i ", b[i][j]);

printf("\n");}line();

L1 = L2 = 0;

for (i=0; i<5; i++)

for (j=0; j<5; j ++)

if (b[i][j]==0){if (i>j) L1 = L1+1;

if (i

L= abs(L1 - L2);

printf(" L = %i ", L);

getch();}
Екінші типтегі есептер алгоритмдері

4-мысал. Бүтін сандардан тұратын a3,6 матрицасы жолдарының алғашқы элементін осы жолдың минимальды элементімен алмастыру керек. Нәтижелік a3,6 матрицасы элементтерін экранға шығару қажет.

/* a[3][6] матрицасы жолдарының алғашкы элементiн осы жолдың минимальды элементiмен алмастыру керек. Натижелiк Х матрицасы элементтерiн экранға шығару кажет.*/

#include

#include

#include

void line()

{printf("------------------------------\n");

return;}


main ( )

{ static int a[3][6]={ {5,-11,4,-2,5,6 }, {2,3,-3,14,-9,-3}, {-9,3,-6,-14,9,-3}};

int i,j,jmin,min;

printf("Берiлген матрица :\n");line(); for (i=0; i<3; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);

printf("\n");}

line();


for (i=0; i<3; i++)

{ min=+1E6;

for (j=0; j<6; j ++)

if (a[i][j]

{min=a[i][j];jmin=j;}

a[i][jmin]=a[i][0];

a[i][0]=min;}

printf("Өңделген матрица :\n");line();

for (i=0; i<3; i++)

{for (j=0; j<6; j ++)

printf(" %3i ", a[i][j]);

printf("\n");} line(); getch();}



5-мысал. Бүтін сандардан тұратын a3,4 матрицасының әрбір бағаналарының арифметикалық орташа мәнін анықтап, оларды бір өлшемді s4 жиымы ретінде бейнелеу керек.

/* a[3][4] матрицасының әрбiр бағаналарының арифметикалық орташа мәнiн анықтап,оларды бiр өлшемдi s[4] жиымы ретiнде бейнелеу керек. */

//әрбір бағана қосындысы және солардың орташа мәні

#include

#include

main ()


{ static int a[3][4]={ {5,11,4,2}, {3,3,12,5}, {2,3,3,14}};

int i,j;

float s[4];

printf("Берiлген матрица :\n");

printf("----------------------\n");

for (i=0; i<3; i++)

{for (j=0; j<4; j ++)

printf(" %3i ", a[i][j]);

printf("\n");}

/* матрицаны өңдеу */

printf("----------------------\n");

printf("");

for (j=0; j<4; j++)

{ s[j]=0;

for (i=0; i<3; i ++) s[j]+=a[i][j]; printf(" %4.2f",s[j]/3);}

printf("\n----------------------");

getch();}

Бұл программада s[j] жиымының әрбір элементін есептеуде қабаттасқан екі цикл қолданылған, онда j индексі сыртқы цикл параметрі, ал i индексі – ішкі цикл параметрі. Осы тәсіл матрица элементтерін бағаналар бойынша өңдеу ісін жүзеге асырады.



6-мысал. Берілген жиымның әрбір жолындағы элементтері қосындыларын және сол қосындылардың орташа мәнін анықтау керек. Әр жол қосындысы және солардың арифметикалық ортасы

#include #include main ()

{ static int a[3][4]= {{5,3,4,2},{3,3,4,5},{2,3,3,4}};

int i,j,s=0;

float c=0;

for (i=0; i<3; i++)

{for (j=0; j<4; j ++) s+=a[i][j]; printf("%i-жол косындысы:%i\n",i+1,s); c+=s;}

printf("--------------------"); printf("\n арифм.ортасы %5/2f", c/4) ; }


7-мысал. Берілген жиымның әрбір бағанадағы элементтері қосындыларын және сол қосындылардың орташа мәнін анықтау керек.

  1. әрбір бағана қосындылары мен солардың орташа мәнін анықтау

#include #include main ()

{static int a[3][4]={{5,11,4,2},{3,3,12,5},{2,3,3,14}};

int i,j,s; float c;

printf("Берiлген матрица :\n"); printf("----------------------\n"); for (i=0; i<3; i++)

{for (j=0; j<4; j ++)

printf(" %3i ", a[i][j]);printf("\n");}

/* Матрицаны өңдеу */

printf("----------------------\n");

printf("s=");

for (j=0; j<4; j++)

{ s=0;

for (i=0; i<3; i ++) s+=a[i][j];



printf("%3i ",s); // қосынды s

c+=s;}


printf("\n----------------------"); printf("\n арифм. ортасы %5.2f",c/4); getch();}

8-мысал. Берілген a4,4 жиымының бас диагоналындағы элементтерді нөлге, ал қосалқы диагоналындағы элементтерді – бірге теңестіру программасы.

#include

#include

#include

main()

{int a[4][4]={{6,8,9,2},{5,3,4,2},{3,3,4,5},{2,3,3,4}};



int i,j;

printf("Берілген матрица :\n"); for (i=0; i<4; ++)

{for (j=0; j<4; j ++)

printf(" %2i ", a[i][j]);printf("\n");}

/* Матрицаны өңдеу */

for (i=0; i<4; i++) a[i][i]=0;

for (i=0; i<4; i++) for (j=0; j<4; j ++)

if (i+j==3) a[i][j]=1;

/* Өңделген матрица элементтерін шығару */ printf("Нәтижелік матрица :\n");

for (i=0; i<4; i++)

{for (j=0; j<4; j ++)

printf(" %2i ", a[i][j]); printf("\n");} getch();}



9-мысал. Берілген a3,3 жиымының бас диагоналынан төмен орналасқан элементтер қосындысын анықтау программасы.

#include

#include

main ()


{static int a[3][3] = {{0,1,2},{3,4,5},{6,7,8}};

int i,j,r,s;

printf("Енгiзiлген а[3][3] жиым элементтерi:\n"); for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);printf("\n");}

/* бас диагоналдан төмен орналасқан элементтер қосындысын анықтау */

s=0;

for (i=0; i<3; i++)



for (j=0; j<3; j++)

if (j

printf("\ns=%i",s);

getch();}

10-мысал. Берілген a3,3 жиымының әрбір жолындағы элементтерді өсуі бойынша реттеп орналастыру программасы.

#include

#include

#include

main ()

{ static int a[3][3] ={{8,7,6},{5,4,3},{2,1,0}};

int i,j,r,s,n=3,amin,m,k;

printf("Берілген матрица:\n"); for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");}

for (i=0; i

{//мин тауып алмастыру

for (k=0; k

{ amin=a[i][k];m=k;

for (j=k+1; j

if (a[i][j] < amin) {amin=a[i][j]; m = j;}

a[i][m]=a[i][k]; a[i][k]=amin;}}

printf("\nНәтижелік матрица:\n"); for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");}

getch();

11-мысал. Берілген a3,3 жиымының әрбір бағанасындағы элементтерді өсуі бойынша реттеп орналастыру программасы.

#include

#include

#include

main ()

{ static int a[3][3]= {{8,7,6},{5,4,3},{2,1,0}};

int i,j,r,s,n=3;

int amin; int m,k; printf("Берілген матрица:\n"); for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");}

for (j=0; j

{for (k=0; k

{ amin=a[k][j];m=k; for (i=k+1; i

if (a[i][j] < amin) {amin=a[i][j]; m = i;}

a[m][j]=a[k][j]; a[k][j]=amin;}}

printf("\nСұрыпталған матрица элементтері:\n"); for (i=0; i<3; i++)

{for (j=0; j<3; j++)

printf(" %2i",a[i][j]);

printf("\n");}getch();}





Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   ...   56




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет