Блок-схема

Начало


Ввод n Ввод m
n<0
m<0
m==0
n==0
Заполнение массива А
Заполнение массива В
Сортировка массива А
Сортировка массива В
Вывод массива А
Вывод массива В
A[n-1][0] ==B[m-1][0] =
Конец
p y6wjT6ZYayBbhjNVv56OLJiZIFJpPYLKP4MOuQkm8rT+LXDMzhWdjSPQKOvgd1Xj7tiqHPKPqget Sfalq/f5LbMdOHLZn8P3SDP94z7Dv3/i1TcAAAD//wMAUEsDBBQABgAIAAAAIQCfJYkV4gAAAAsB AAAPAAAAZHJzL2Rvd25yZXYueG1sTI/LTsMwEEX3SPyDNUjsqE2apiXEqVAlFlQKagsLlk48TSL8 iGK3DX/fYQW7Gc3RnXOL9WQNO+MYeu8kPM4EMHSN171rJXx+vD6sgIWonFbGO5TwgwHW5e1NoXLt L26P50NsGYW4kCsJXYxDznloOrQqzPyAjm5HP1oVaR1brkd1oXBreCJExq3qHX3o1ICbDpvvw8lK qLL3Tb0/tl8q7N78bqurycwrKe/vppdnYBGn+AfDrz6pQ0lOtT85HZiRkKbLJaESFk/pAhgRWSIS YDUN85UAXhb8f4fyCgAA//8DAFBLAQItABQABgAIAAAAIQC2gziS/gAAAOEBAAATAAAAAAAAAAAA AAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhADj9If/WAAAAlAEAAAsA AAAAAAAAAAAAAAAALwEAAF9yZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhAGz0OE8CAgAADAQAAA4A AAAAAAAAAAAAAAAALgIAAGRycy9lMm9Eb2MueG1sUEsBAi0AFAAGAAgAAAAhAJ8liRXiAAAACwEA AA8AAAAAAAAAAAAAAAAAXAQAAGRycy9kb3ducmV2LnhtbFBLBQYAAAAABAAEAPMAAABrBQAAAAA= " strokecolor="black [3040]">


Блок-схема для условия n<0 (для m<0 аналогично)

Блок схема для условия n==0 (для m==0 аналогично)

Блок-схема для заполнения массива А (заполнение массива В аналогично)

Функция сортировки.

 

 

Блок-схема условия A[n-1][0]==B[m-1][0]

 

 

Вывод массива.

 


Блок-схема функции square


Листинг программы

#include<stdio.h>

#include<windows.h>

#include<time.h>

#include<math.h>

void sorting(float **X, int *x);

void output(float **X, int *x);

void square(float **X,float **Y,int *x);

 

int main(){

int n,m;

srand(time(NULL));

 

SetConsoleOutputCP(1251);

printf("Введите размер квадратной матрицы A: ");

scanf("%i", &n);

printf("Введите размер квадратной матрицы B: ");

scanf("%i", &m);

if(n<0){

printf("Вы ввели отрицательное число. Будет взят модуль этого числа\n");

n=abs(n);

}

if(m<0){

printf("Вы ввели отрицательное число. Будет взят модуль этого числа\n");

m=abs(m);

}

if(n==0){

printf("Вы ввели размер массива A равный 0.\n Размер увеличен на 1\n");

n++;

}

if(m==0){

printf("Вы ввели размер массива B равный 0.\n Размер увеличен на 1\n");

m++;

}

 

float **A = new float *[n];

for(int i = 0; i < n; i++){

A[i] = new float [n];

for(int j = 0; j < n; j++) A[i][j] =rand() % 10;

}

float **B = new float *[m];

for( int i = 0; i < m; i++){

B[i] = new float [m];

for(int j = 0; j < m; j++) B[i][j] =rand() % 10;

}

 

sorting(A,&n);

sorting(B,&m);

printf("\nОтсортированная матрица A\n");

output(A,&n);

printf("Отсортированная матрица B\n");

output(B,&m);

 

if(A[n-1][0]==B[m-1][0]){

printf("\nA[%i][1]=B[%i][1]\n",n,m);

}

else{

if(A[n-1][0]<B[m-1][0]){

float **C = new float *[n];

for(int i = 0; i < n; i++){

C[i] = new float [n];

for(int j = 0; j < n; j++) C[i][j] = 0;

}

printf("\nA[%i][1]<B[%i][1]\nКвадрат матрицы A\n",n,m);

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

square(A,C,&n);

output(C,&n);

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

for(int i = 0; i < n; i++) delete [] C[i];

delete []C;

}

else{

printf("\nA[%i][1]>B[%i][1]\nКвадрат матрицы B\n",n,m);

float **C = new float *[m];

for(int i = 0; i < m; i++){

C[i] = new float [m];

for(int j = 0; j < m; j++) C[i][j] = 0;

}

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

square(B,C,&m);

output(C,&m);

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

for(int i = 0; i < m; i++) delete [] C[i];

delete []C;

}

}

for(int i = 0; i < n; i++) delete [] A[i];

delete []A;

for(int i = 0; i < m; i++) delete [] B[i];

delete []B;

system("pause");

return 0;

}

void sorting(float **X, int *x){

for(int k=0;k<*x;k++){

for(int j=0;j<*x;j++){

for(int i = 1; i < *x; i++){

if(X[i][j]>X[i-1][j]){

float q=X[i][j];

X[i][j]=X[i-1][j];

X[i-1][j]=q;

}

}

 

}

}

 

 

}

void output(float **X, int *x){

for( int i = 0; i < *x; i++){

for(int j = 0; j < *x; j++) printf(" %.1f ",X[i][j]);

printf("\n\n");

}

printf("\n");

}

void square(float **X,float **Y, int *x){

for(int i=0;i<*x;i++)

for(int j=0;j<*x; j++)

for(int k=0;k<*x; k++){

Y[i][j]+=X[i][k]*X[k][j];

}

}