Created
April 10, 2017 19:42
-
-
Save mAlishera/95ffd90fcf1e97c05a43b8d401230c6c to your computer and use it in GitHub Desktop.
1 - отсортировать столбцы матрицы, 2 -четные выше гл диагонали - поменять на максимум
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdlib.h> | |
#include <math.h> | |
#include <curses.h> | |
#include <cmath> | |
#include <algorithm> | |
#include <iostream> | |
#include <time.h> | |
int main(int argc, const char * argv[]) | |
{ | |
// Задача 1 | |
// двумерный массив R строк C столбцов | |
// определить для каждого столбца минимальное значение и отсортировать столбцы матрицы по возрастанию полученных значений | |
// выводим исходную матрицу, вектор минимальных значений, преобразованную матрицу | |
const int R = 5; | |
const int C = 3; | |
const int N = 20; | |
int a[R][C], aa[R][C]; | |
int S[C]; | |
int i, j; | |
int tmp, tmp1; | |
int acc(0), ass(0); | |
srand((unsigned) time(0)); | |
for(i=0; i<R; i++) | |
for(j=0; j<C; j++){ | |
a[i][j]=rand()%N; | |
aa[i][j]=a[i][j]; | |
} | |
printf("\n\t Исходный массив - "); | |
for(i=0; i<R; i++) { | |
printf("\n\t"); | |
for(j=0; j<C; j++) | |
printf("%4d", a[i][j]); | |
} | |
// считаем минимальный | |
for(j=0; j<C; j++) { | |
for(i=0; i<R; i++) { | |
for(int k=0; k<(R - 1)-i; k++) { | |
if(a[k][j]<a[k+1][j]) { | |
tmp = a[k][j]; a[k][j] = a[k+1][j]; | |
a[k+1][j] = tmp; | |
}; | |
}; | |
S[j] = a[R-1][j]; | |
} | |
} | |
printf("\n\t"); | |
printf("\n\t массив минимальных -"); | |
printf("\n\t"); | |
for(i=0; i<C; i++) { | |
printf("%4d", S[acc++]); | |
} | |
for(j=0; j<C; j++) { | |
for(int k=0; k<(C - 1)-j; k++) { | |
if(S[k]>S[k+1]) { | |
// сортируем матрицу | |
for(i=0; i<R; i++) { | |
tmp1 = aa[i][k]; aa[i][k] = aa[i][k+1]; | |
aa[i][k+1] = tmp1; | |
}; | |
// сортируем массив минимальных | |
tmp = S[k]; S[k] = S[k+1]; | |
S[k+1] = tmp; | |
}; | |
}; | |
} | |
printf("\n\t"); | |
printf("\n\t отсортированный массив минимальных -"); | |
printf("\n\t"); | |
for(i=0; i<C; i++) { | |
printf("%4d", S[ass++]); | |
} | |
printf("\n\t"); | |
printf("\n\t отсортированный исходный массив -"); | |
printf("\n\t"); | |
for(i=0; i<R; i++) { | |
printf("\n\t"); | |
for(j=0; j<C; j++) | |
printf("%4d", aa[i][j]); | |
} | |
// Задача 2 | |
// квадратная матрица n+1 | |
// главная диагональ 0,0 n,n | |
// найти минимальное среди элементов выше гл диагонали и вывести на экран | |
// максимальное ниже гл диагонали и вывести на экран | |
// все четные выше гл диагонали - поменять на максимум | |
// все нечетные ниже гл диагонали - поменять на минимум | |
// const int R = 5; | |
// const int N = 20; | |
// | |
// int a[R][R], aa[R][R]; | |
// int S[2*R]; | |
// int H[(R-1)*R/2]; | |
// int L[(R-1)*R/2]; | |
// int i, j, l, h; | |
// int tmp, tmp1, ltmp, htmp; | |
// int acc(0), ass(0), lacc(0), hacc(0); | |
// | |
// srand((unsigned) time(0)); | |
// for(i=0; i<R; i++) | |
// for(j=0; j<R; j++){ | |
// a[i][j]=rand()%N; | |
// aa[i][j]=a[i][j]; | |
// }; | |
// for(int h=0; h<R*R/2; h++) | |
// H[h]=-1; | |
// for(int l=0; l<R*R/2; l++) | |
// L[l]=-1; | |
// | |
// printf("\n\t Исходный квадратный массив - "); | |
// for(i=0; i<R; i++) { | |
// printf("\n\t"); | |
// for(j=0; j<R; j++) | |
// printf("%4d", a[i][j]); | |
// }; | |
// | |
// h = 0; l = 0; | |
// for(j=0; j<R; j++) { | |
// for(i=0; i<R; i++) { | |
// // массив главной диагонали | |
// if(i == j) | |
// S[i] = a[i][j]; | |
// // массим минимума | |
// if(i < j) { | |
// L[l] = a[i][j]; | |
// l++; | |
// }; | |
// // массив максимума | |
// if(i > j) { | |
// H[h] = a[i][j]; | |
// h++; | |
// }; | |
// }; | |
// } | |
// | |
// for(j=0; j<R*R/2; j++) { | |
// for(int l=0; l<((R-1)*R/2 - 1)-j; l++) { | |
// if(L[l]>L[l+1]) { | |
// // сортируем массив минимальных | |
// ltmp = L[l]; L[l] = L[l+1]; | |
// L[l+1] = ltmp; | |
// }; | |
// }; | |
// } | |
// | |
// for(j=0; j<R*R/2; j++) { | |
// for(int h=0; h<((R-1)*R/2 - 1)-j; h++) { | |
// if(H[h]<H[h+1]) { | |
// // сортируем массив максимальных | |
// htmp = H[h]; H[h] = H[h+1]; | |
// H[h+1] = htmp; | |
// }; | |
// }; | |
// } | |
// | |
// printf("\n\t"); | |
// printf("\n\t главная диагональ -"); | |
// printf("\n\t"); | |
// for(i=0; i<R; i++) | |
// printf("%4d", S[ass++]); | |
// | |
// printf("\n\t"); | |
// printf("\n\t отсортированный массив минимальных -"); | |
// printf("\n\t"); | |
// for(i=0; i<(R-1)*R/2; i++) | |
// printf("%4d", L[lacc++]); | |
// printf("\n\t минимальное - "); | |
// printf("%2d \n\t", L[0]); | |
// | |
// printf("\n\t отсортированный массив максимальных -"); | |
// printf("\n\t"); | |
// for(i=0; i<(R-1)*R/2; i++) | |
// printf("%4d", H[hacc++]); | |
// printf("\n\t максимальное - "); | |
// printf("%2d \n\t", H[0]); | |
// | |
// for(j=0; j<R; j++) { | |
// for(i=0; i<R; i++) { | |
// // массим минимума | |
// if(i < j) { | |
// if (a[i][j]%2 == 0) | |
// a[i][j] = H[0]; | |
// }; | |
// // массив максимума | |
// if(i > j) { | |
// if (a[i][j]%2 != 0) | |
// a[i][j] = L[0]; | |
// }; | |
// }; | |
// } | |
// printf("\n\t Измеренный квадратный массив - "); | |
// for(i=0; i<R; i++) { | |
// printf("\n\t"); | |
// for(j=0; j<R; j++) | |
// printf("%4d", a[i][j]); | |
// }; | |
// | |
// конец main | |
printf("\n\t"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment