BabylonKinki
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Не подскажите,как сделать чтобы матрица сортировалась не по строкам,а по стобцам????????????? Код: #include "stdafx.h" #include <stdio.h> #include <iostream> #include <conio.h> #include <time.h> #include <windows.h> using namespace std; HANDLE hStdout; int Bs=0,Bp=0; int* Byst_Sort(int* Ai, int L ) { int NSep,Sep; int i,j=0,x=0,p1=0,p2=0; NSep=L%2; Sep=Ai[NSep]; for (i=0;i<L;i++) if ((abs(Ai[i])<=abs(Sep)) && (i!=NSep)) x++; p1=L-x-1; p2=x; int *Ai1=new int [p1]; int *Ai2=new int [p2]; p1=0;p2=0; for (i=0;i<L;i++) if ((abs(Ai[i])<=abs(Sep)) && (i!=NSep)) { Ai1[p1]=Ai[i]; p1++; Bs++; } else { if (abs(Ai[i])>abs(Sep)) { Ai2[p2]=Ai[i]; p2++; Bs++; } } if (p1>1) Ai1=Byst_Sort(Ai1,p1); if (p2>1) Ai2=Byst_Sort(Ai2,p2); for (i=0;i<p1;i++) { Ai[i]=Ai1[i]; Bp++; } Ai[p1]=Sep; Bp++; for (i=p1+1;i<p1+p2+1;i++) { Ai[i]=Ai2[j]; j++; Bp++; } return Ai; } int main() { int M,i,j,N; float MM,NN; hStdout=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdout,15); lable1: printf("Vvedite koLi4estvo strok\n"); scanf_s("%f",&MM); M=MM; if ((M<1) || (M!=MM)) { printf("vvedeno nevernoe znachenie\n"); goto lable1; } lable2: printf("Vvedite koLi4estvo stolbcov\n"); scanf_s("%f",&NN); N=NN; if ((N<2) || (N!=NN)) { printf("vvedeno nevernoe znachenie\n"); goto lable2; } int **A=new int *[M]; for (i=0;i<M;i++) A[i]=new int [N]; srand(time(0)); for (i=0;i<M;i++) for (j=0;j<N;j++) A[i][j]=rand()%200-100; SetConsoleTextAttribute(hStdout,6); printf("\nIsxodHaya matrica : \n\n"); for (i=0;i<M;i++) { for (j=0;j<N;j++) printf(" %4d", A[i][j]); printf("\n"); } _getch(); SetConsoleTextAttribute(hStdout,15); for (i=0;i<M;i++) A[i]=Byst_Sort(A[i],N); printf("\n Matrica posle perestanovki metodom bystroi sortirovki : \n\n"); SetConsoleTextAttribute(hStdout,5); for (i=0;i<M;i++) { for (j=0;j<N;j++) printf(" %4d", A[i][j]); printf("\n"); } printf("\nKoLi4estvo perestanovok = %d\n", Bp); printf("\nkoLi4estvo sravnenii' = %d\n", Bs); _getch(); SetConsoleTextAttribute(hStdout,15); return 0; } |
|