| Код | #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <conio.h> #include <time.h>
void MOut(int** ms, int numCol, int numRow) { int i, j, count=0;
puts(""); for(i=0; i<numRow; i++) { for(j=0;j<numCol; j++) { printf("%3d", ms[i][j]); count++; if(!(count%numCol)) printf("\n"); } } }
int** ColSort(int **ms, int numCol, int numRow) { int i,j,c,f; ms=(int**)realloc(ms, (numRow+1)*sizeof(int*));
for(i=0;i<numRow;i++) ms[i]=(int*)realloc(ms[i], numCol*sizeof(int));
ms[numRow]=(int*)malloc(numCol*sizeof(int)); for(i=0; i<numCol; i++) ms[numRow][i]=0;
for(j=0; j<numCol; j++) { for(i=0; i<numRow;i++) ms[numRow][j]+=ms[i][j]; } puts(""); for(i=0; i<numCol; i++) printf("%3d", ms[numRow][i]);
for(f=0;f<numCol; f++) for(i=0;i<numCol-1-f;i++) { if(ms[numRow][i]>ms[numRow][i+1]) { for(j=0;j<=numRow;j++) { c=ms[j][i+1]; ms[j][i+1]=ms[j][i]; ms[j][i]=c; } } }
puts("\n\nSorted matrix:"); MOut(ms, numCol, numRow); puts(""); for(i=0;i<numCol; i++) printf("%3d", ms[numRow][i]);
return **ms; }
int** RowSort(int** ms,int numCol,int numRow) { int f,i,j; int *c;
for(f=0;f<numRow; f++) for(i=0;i<numRow-1-f;i++) { j=0; while((ms[i][j]==ms[i+1][j]) && j<numCol) j++; if(ms[i][j]>ms[i+1][j]) { c=ms[i]; ms[i]=ms[i+1]; ms[i+1]=c; j=0; } } MOut(ms, numCol, numRow);
return ms; }
void main() { int **matrix, i, j, numRow=0, numCol=0; srand(time(NULL));
do { printf("Input number of rows: "); scanf("%d", &numRow); printf("\nInput number of colums: "); scanf("%d", &numCol); }while(numCol<=0 || numRow<=0);
if(!(matrix=(int**)malloc(numRow*sizeof(int*)))) exit(0); for(i=0; i<numRow; i++) if(!(matrix[i]=(int*)malloc(numCol*sizeof(int)))) exit(0);
for(i=0; i<numRow; i++) for(j=0;j<numCol; j++) matrix[i][j]=rand()%10;
MOut(matrix,numCol,numRow); matrix=ColSort(matrix,numCol,numRow); matrix=RowSort(matrix,numCol,numRow); }
|
вот такую фигню написал... помогите найти ошибку |