Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.74 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <locale.h>
  4. #include <time.h>
  5. int main(){
  6. setlocale(LC_ALL, "");//подключили стандартную для ОС кодировку (и теперь есть русский язык!)
  7. int size=0;//создаём переменную под размер
  8. while(!(size>=1&&size<=8)){//повторяем код внутри блока до тех пор, пока не введут значения в заданном интервале
  9. puts("Введите размер квадратной матрицы");//перевод новой строки уже есть в функции puts
  10. scanf("%i", &size);//считываем значение с клавиатуры
  11. }
  12. int array[size][size];//создаём матрицу заданного размера
  13. int choice=0;//используется для выбора типа задания матрицы
  14. while(!(choice==1||choice==2)){//повторяем код внутри блока до тех пор, пока не введут значения в заданном интервале
  15. puts("Введите способ задания матрицы: 1 для ручного и 2 для автоматического");//перевод новой строки уже есть в функции puts
  16. scanf("%i", &choice);//считываем значение с клавиатуры
  17. }
  18. if (choice==1){//ручной ввод
  19. for(int i=0; i<size; i++){
  20. for(int j=0; j<size; j++){
  21. printf("Введите значение %i-ой строки %i-ого столбца: ", i+1,j+1);
  22. scanf("%i", &array[i][j]);
  23. }}}
  24. if (choice==2){//автоматическое заполнение матрицы с помощью псевдослучайных чисел
  25. srand(time(NULL));//задаём начальное значение для генератора случайных чисел текущим временем
  26. for(int i=0; i<size; i++)
  27. for(int j=0; j<size; j++){
  28. array[i][j]=rand()%100;//берем остаток от деления на 100, т.е. числа в интервале [0, 100]
  29. }}
  30. puts("Сформированная матрица имеет вид");
  31. for(int i=0; i<size; i++){
  32. for(int j=0; j<size; j++)
  33. printf("%3i ", array[i][j]);//выводим элементы массива, выделяя по три ячейки на каждое значение
  34. puts(""); //перевод вывода на новую строку
  35. }
  36. int sortarray[size+2*(size-1)];//создаём массив для сортировки
  37. int k=0;
  38.  
  39. for(int i=0; i<size; i++)
  40. sortarray[k++]=array[i][0];//вводим в массив значения левой вертикали
  41. for(int i=1; i<(size-1); i++)
  42. sortarray[k++]=array[0][i];//вводим в массив значения горизонтали
  43. for(int i=0; i<size; i++)
  44. sortarray[k++]=array[i][size-1];//вводим в массив значения правой вертикали
  45.  
  46. int tmp;//сортировка пузырьком
  47. int noSwap;
  48. int i;
  49. for (i= (size+2*(size-1)) - 1; i >= 0; i--)
  50. {
  51. noSwap = 1;
  52. int j;
  53. for (j = 0; j < i; j++)
  54. {
  55. if (sortarray[j] > sortarray[j + 1])
  56. {
  57. tmp = sortarray[j];
  58. sortarray[j] = sortarray[j + 1];
  59. sortarray[j + 1] = tmp;
  60. noSwap = 0;
  61. }
  62. }
  63. if (noSwap == 1)
  64. break;
  65. }
  66.  
  67. k=0;
  68. for(int i=size-1; i>0; i--)
  69. array[i][0]=sortarray[k++];//выводим из массива значения левой вертикали
  70. for(int i=0; i<(size-1); i++)
  71. array[0][i]=sortarray[k++];//выводим из массива значения горизонтали
  72. for(int i=0; i<size; i++)
  73. array[i][size-1]=sortarray[k++];//выводим из массива значения правой вертикали
  74.  
  75.  
  76. puts("");
  77. puts("Отсортированная матрица 'по букве П'имеет вид");
  78. for(int i=0; i<size; i++){
  79. for(int j=0; j<size; j++)
  80. printf("%3i ", array[i][j]);//выводим элементы массива, выделяя по три ячейки на каждое значение
  81. puts(""); //перевод вывода на новую строку
  82. }
  83.  
  84. int min=100;//изначально самое большое число
  85. int max=0;//изначально самое маленькое число
  86. for(int i=1; i<(size-1); i++)
  87. for(int j=1; j<size;j++){
  88. if(min>array[j][i])
  89. min=array[j][i];
  90. if(max<array[j][i])
  91. max=array[j][i];
  92. }
  93. printf("Максимальное среди неотсортированных элементов: %i. Минимальное: %i\n", max, min);
  94.  
  95. return EXIT_SUCCESS;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement