Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4.  
  5. void fillArrayRange(int arr[], int size, int from, int to);
  6. void printArr(int ar[], int size);
  7. void sortDescending(int ar[], int size);
  8. void swap(int arr[], int size, int i, int j);
  9. void printArr(int ar[], int size);
  10. void sortInRange(int ar[], int size, int start, int end);
  11. void evenFirst(int ar[], int size);
  12. void evenFirst2(int ar[], int size);
  13. int flag(int arr[], int size);
  14. int search(int arr[], int size, int number);
  15.  
  16. int main() {
  17. int size = 10, from = -10, to = 10, start = -15, end = 10, number = -2;
  18. int array[size];
  19. //=============Check values==================
  20. if (size > 1 || from > to)
  21. fillArrayRange(array, size, from, to);
  22. else {
  23. printf("Invalid value");
  24. return 0;
  25. }
  26. //=============END Check values==============
  27. printArr(array, size);
  28.  
  29. printf("============1 task============\n");
  30. sortDescending(array, size);
  31. printArr(array, size);
  32.  
  33. printf("============2 task============\n");
  34. sortInRange(array, size, start, end);
  35. printArr(array, size);
  36.  
  37. printf("============3 task============\na)");
  38. evenFirst(array, size);
  39. printArr(array, size);
  40. printf("b)");
  41. evenFirst2(array, size);
  42. printArr(array, size);
  43.  
  44. printf("============4 task============\n");
  45. flag(array, size) > 0 ? printf("Massive is sorted\n") : printf(
  46. "Massive is unsorted\n");
  47. search(array, size, number) >= 0 ? printf("Index of number = %d\n", search(
  48. array, size, number)) : printf("Number %d is not in massive\n",
  49. number);
  50.  
  51. return 0;
  52. }
  53.  
  54. int search(int arr[], int size, int number) {
  55. int left = 0, right = size - 1, middle, index = -1;
  56. if (flag(arr, size) == 1) {
  57. while (left <= right) {
  58. middle = (left + right) / 2;
  59. if (arr[middle] == number) {
  60. index = middle;
  61. break;
  62. }
  63. if (number < arr[middle]) {
  64. right = middle - 1;
  65. } else {
  66. left = middle + 1;
  67. }
  68. }
  69. } else if (flag(arr, size) == 2) {
  70. while (left <= right) {
  71. middle = (left + right) / 2;
  72. if (arr[middle] == number) {
  73. index = middle;
  74. break;
  75. }
  76. if (number < arr[middle]) {
  77. left = middle + 1;
  78. } else {
  79. right = middle - 1;
  80. }
  81. }
  82. } else {
  83. int i;
  84. for (i = 0; i < size; i++) {
  85. if (arr[i] == number)
  86. index = i;
  87. }
  88. }
  89. return index;
  90.  
  91. }
  92.  
  93. int flag(int arr[], int size) {
  94. int i, countUp = 0, countDown = 0;
  95. for (i = 1; i < size; i++) {
  96. if (arr[i - 1] <= arr[i])
  97. countUp++;
  98. if (arr[i - 1] >= arr[i])
  99. countDown++;
  100. }
  101. if (countUp == size - 1)
  102. return 1; //по возрастающей
  103. else if (countDown == size - 1)
  104. return 2; //по убывающей
  105. else
  106. return 0; //не отсортирован
  107. }
  108.  
  109. void evenFirst2(int ar[], int size) {
  110. int i, j, min, minIndex;
  111. for (i = 0; i < size; i++) {
  112. min = ar[i];
  113. minIndex = i;
  114. for (j = i + 1; j < size; j++) {
  115. if (ar[j] % 2 == 0 && ar[j] < min) {
  116. min = ar[j];
  117. minIndex = j;
  118. }
  119. }
  120. if (i != minIndex) {
  121. swap(ar, size, i, minIndex);
  122. }
  123. }
  124. }
  125.  
  126. void evenFirst(int ar[], int size) {
  127. int i, j, min, minIndex;
  128. for (i = 0; i < size; i++) {
  129. min = ar[i];
  130. minIndex = i;
  131. for (j = i + 1; j < size; j++) {
  132. if (ar[j] % 2 == 0) {
  133. min = ar[j];
  134. minIndex = j;
  135. }
  136. }
  137. if (i != minIndex) {
  138. swap(ar, size, i, minIndex);
  139. }
  140. }
  141. }
  142.  
  143. void sortInRange(int ar[], int size, int start, int end) {
  144. int i, j, min, minIndex;
  145. if (start > end || start < 0 || end > size - 1) {
  146. printf("Invalid value, massive without changes\n");
  147. } else {
  148. for (i = start; i <= end; i++) {
  149. min = ar[i];
  150. minIndex = i;
  151. for (j = i + 1; j <= end; j++) {
  152. if (ar[j] < min) {
  153. min = ar[j];
  154. minIndex = j;
  155. }
  156. }
  157. if (i != minIndex) {
  158. swap(ar, size, i, minIndex);
  159. }
  160. }
  161. }
  162. }
  163.  
  164. void sortDescending(int ar[], int size) {
  165. int i, j, max, maxIndex;
  166. for (i = 0; i < size; i++) {
  167. max = ar[i];
  168. maxIndex = i;
  169. for (j = i + 1; j < size; j++) {
  170. if (ar[j] > max) {
  171. max = ar[j];
  172. maxIndex = j;
  173. }
  174. }
  175. if (i != maxIndex) {
  176. swap(ar, size, i, maxIndex);
  177. }
  178. }
  179. }
  180.  
  181. void swap(int arr[], int size, int i, int j) {
  182. int temp = arr[i];
  183. arr[i] = arr[j];
  184. arr[j] = temp;
  185. }
  186.  
  187. void fillArrayRange(int arr[], int size, int from, int to) {
  188. srand(time(NULL));
  189. int i;
  190. for (i = 0; i < size; i++) {
  191. arr[i] = from + rand() % (to + 1 - from);
  192. }
  193. }
  194.  
  195. void printArr(int ar[], int size) {
  196. int i;
  197. for (i = 0; i < size; i++) {
  198. printf("%d ", ar[i]);
  199. }
  200. printf("\n");
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement