Skip to content

Instantly share code, notes, and snippets.

@mAlishera
Created April 10, 2017 19:42
Show Gist options
  • Save mAlishera/95ffd90fcf1e97c05a43b8d401230c6c to your computer and use it in GitHub Desktop.
Save mAlishera/95ffd90fcf1e97c05a43b8d401230c6c to your computer and use it in GitHub Desktop.
1 - отсортировать столбцы матрицы, 2 -четные выше гл диагонали - поменять на максимум
#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