Пример программы. //Область 5 (правая половина матрицы ниже главной диагонали)

//Область 5 (правая половина матрицы ниже главной диагонали).

//Метод вставки. Строки по возрастанию.

#include<stdio.h>

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

const RAZ = 8; //максимально возможный размер матрицы

void okno(int x1,int y1,int x2,int y2,int bkcol,int colb,char zag[15]);

void obnul(const int n,int**);

void sortir(const int n,int**);

void imputmas(const int n,int a,int b,int**);

void outputmas(const int n,int**);

void main()

{int i,a,b,n;

int matr[RAZ][RAZ];

okno(1,1,80,25,BLACK,WHITE,"");

okno(1,1,30,12,WHITE,BLACK,"Описание");

cprintf("\r\nВ двумерном массие размером\r\n");

cprintf("2n x 2n отсортировать строки\r\n");

cprintf("области № 5 по возрастанию\r\n");

cprintf("методом вставки.\r\n");

okno(32,1,79,12,BLUE,WHITE,"Исходная матрица");

okno(32,14,79,24,BLUE,WHITE,"Результирующая матрица");

okno(1,14,30,24,WHITE,BLACK,"Окно ввода");

cout << "\nВведите границы диапазона\n";

cout << "изменения случайных чисел\n";

cin >> a >> b;

cout << "Введите размер матрицы <=4:\n ";

cin >> n;

int *dinamo[RAZ];

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

dinamo[i] = matr [i];

imputmas(n,a,b,dinamo);

okno(32,1,79,12,BLUE,WHITE,"Исходная матрица");

outputmas(n,dinamo);

sortir(n,dinamo);

obnul(n,dinamo);

okno(32,14,79,24,BLUE,WHITE,"Результирующая матрица");

outputmas(n,dinamo);

getchar();

}

void okno(int x1,int y1,int x2,int y2,int bkcol,int colb,char zag[15])

{window(x1,y1,x2,y2);

textbackground(bkcol);

textcolor(colb);

clrscr();

gotoxy((x2 - x1 - strlen(zag)) / 2,1);

cprintf("%s\n\r",zag);

}

void imputmas(const int n,int a,int b,int** dinamit)

{int i,j;

randomize();

for(i = 0; i < 2 * n; i++)

for(j = 0; j < 2 * n; j++)

dinamit[i][j] = random(1+b-a) + a;

}

void outputmas(const int n,int** dinamit)

{int i,j;

for(i = 0; i < 2 * n; i++)

{for(j = 0; j < 2 * n; j++)

if((j <= i)&&(j > n - 1))

{textbackground(WHITE);

textcolor(RED);

cprintf("%4i",dinamit[i][j]);

textcolor(WHITE);

textbackground(BLUE);

}

else cprintf("%4i",dinamit[i][j]);

gotoxy(1,i+3);

}

}

void sortir(const int n,int** dinamit)

{int i,j,k,t,b;

for(k = n + 1; k < 2 * n; k++) //номер строки

for(i = n + 1; i <= k; i++) //номер прохода

{t = dinamit[k][i];

b = n;

while(b < i && dinamit[k][b] <= dinamit[k][i])

b++;

for(j = i - 1; j >= b; j--) //номер столбца

dinamit[k][j + 1] = dinamit[k][j];

dinamit[k][b] = t;

}

}

void obnul(const int n,int** dinamit)

{int i,j;

for(i = 0; i < 2 * n; i++)

for(j = 0; j < 2 * n; j++)

if(!(j <= i && j > n - 1))

dinamit[i][j] = 0;

}


Лабораторная работа №8


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: