Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PGP_Avtosokhranennyy2.docx
Скачиваний:
1
Добавлен:
17.09.2019
Размер:
454.52 Кб
Скачать

3.4 Результат виконання завдання 4

Лістинг програми завдання 1А

#include <stdio.h>

#include <unistd.h>

#include <sys/ipc.h>

#include <sys/shm.h>

#include <sys/wait.h>

#include <stdlib.h>

int x,y;

int a,b;

int A[5][5]={{4,-8,7,1,2},{45,3,4,-78,3},{-34,54,3,8,-9},{-36,43,6,-1,2},{43,56, -5,72,3}};

int max;

int tmpX;

int tmpY;

struct mem{

int maxX;

int maxY;

int mas[5][5];

int maxS;

int y[5][5];

int x[5][5];

}*mem_max;

int main(){

int shmid=shmget(IPC_PRIVATE,2,IPC_CREAT|0666);

if(shmid<0){

fprintf(stdout,"Oshubka\n");

return 0;

}

mem_max=(mem *)shmat(shmid,NULL,0);

int pid;

pid=fork();

if(pid==0){

//Zapobnenna A[x][y]

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

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

mem_max->mas[x][y]=A[x][y];

//Znaxodgenna max

max=A[0][0];

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

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

if(abs(max)<abs(A[x][y])){

max=A[x][y];

a=x;

b=y;

}

mem_max->maxS=max;

mem_max->maxX=a;

mem_max->maxY=b;

//Perectanobka 0 with 2 col

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

tmpX=A[x][0];

A[x][0]=A[x][2];

A[x][2]=tmpX;

}

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

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

mem_max->x[x][y]=A[x][y];

//Perectanobka 1 with 3 row

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

tmpY=A[1][y];

A[1][y]=A[3][y];

A[3][y]=tmpY;

}

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

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

mem_max->y[x][y]=A[x][y];

}

if(pid!=0){

//Zapobnenna A[x][y]

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

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

mem_max->mas[x][y]=A[x][y];

//Znaxodgenna max

max=A[0][0];

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

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

if(abs(max)<abs(A[x][y])){

max=A[x][y];

a=x;

b=y;

}

//Perectanobka 0 with 2 col

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

tmpX=A[x][0];

A[x][0]=A[x][2];

A[x][2]=tmpX;

}

//Perectanobka 1 with 3 row

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

tmpY=A[1][y];

A[1][y]=A[3][y];

A[3][y]=tmpY;

}

wait(NULL);

//Bubedenna A[x][y]

printf("Bubedenna matruci:\n");

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

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

fprintf(stdout,"%4d",mem_mas->mas[x][y]);

}

printf("\n");

}

//Bubedenna max

printf("Bubedenna max po modolu element matruci:\n");\

printf("x y max\n");

fprintf(stdout,"%d %d %d\n", mem_max->maxX, mem_max->maxY,mem_max->maxS);

//Bubedenna perectanoblenux col

printf("Pominatu col 0 with 2\n");

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

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

fprintf(stdout,"%4d"mem_max->x[x][y]);

}

printf("\n");

}

//Bubedenna perectanoblenux row

printf("Pominatu row 1 with 3\n");

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

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

fprintf(stdout,"%4d",mem_max->y[x][y]);

}

printf("\n");

}

}

return 1;

}

Результати програми завдання 1А

Рисунок 3.4.1 – Виведення матриці А

Рисунок 3.4.2 – Виведення максимального по модулю елемента у матриці А

Рисунок 3.4.3 - Міняється місцями стовпець 0 зі стовпцем 2

Рисунок 3.4.5 - Міняється місцями рядок 1 з рядком 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]