Advertisement
LosPollos

Home task 2-1

Feb 27th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.10 KB | None | 0 0
  1. /*******************************************************************
  2. Сгенерировать одномерный динамический массив из N целых элементов, число N считать с клавиатуры (сделать цикл, который не позволит программе продолжиться, пока не будет введено 4 < N < 128). В этом массиве найти максимальный из отрицательных элементов и поменять его местами с последним элементом массива. Вывести оба массива.
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <time.h>
  8.  
  9.  
  10. void generate(int* arr, int size)
  11. {
  12.     srand(time(NULL));
  13.  
  14.     for (unsigned i = 0; i < size; ++i)
  15.     {
  16.         arr[i] = rand() % 201 - 100;
  17.     }
  18. }
  19.  
  20.  
  21.  
  22. unsigned findMaxNegative(const int* arr, int size)
  23. {
  24.     unsigned index = 0;
  25.     int temp = INT_MIN;
  26.     for (unsigned i = 0; i < size; ++i)
  27.     {
  28.         if (arr[i] > temp && arr[i] < 0)
  29.         {
  30.             index = i;
  31.             temp = arr[i];
  32.             //printf("i - %d | temp - %d\n", i, temp); // Test
  33.         }
  34.     }
  35.  
  36.     return index;
  37. }
  38.  
  39.  
  40.  
  41. void arrCopy(int* arrRes, const int* arrSource, int size)
  42. {
  43.     for (unsigned i = 0; i < size; ++i)
  44.     {
  45.         arrRes[i] = arrSource[i];
  46.     }
  47. }
  48.  
  49.  
  50.  
  51. void print(const int* arr, int size)
  52. {
  53.     for (unsigned i = 0; i < size; ++i)
  54.     {
  55.         printf("%d ", arr[i]);
  56.     }
  57. }
  58.  
  59.  
  60.  
  61. int main()
  62. {
  63.     unsigned int size = 0;
  64.  
  65.     // Input.
  66.     do
  67.     {
  68.         system("cls");
  69.         printf("Enter array size: ");
  70.         scanf_s("%u", &size);
  71.     } while (size < 5 || size > 127);
  72.  
  73.     int* arr = (int*)malloc(size * sizeof(int));
  74.     int* arr2 = (int*)malloc(size * sizeof(int));
  75.  
  76.     // Generate, copy to arr2 and search.
  77.     generate(arr, size);
  78.     arrCopy(arr2, arr, size);
  79.     unsigned index = findMaxNegative(arr, size);
  80.  
  81.     // Change places.
  82.     int temp = arr[index];
  83.     arr[index] = arr[size - 1];
  84.     arr[size - 1] = temp;
  85.  
  86.     system("cls");
  87.     printf("First array: \n");
  88.     print(arr2, size);
  89.     printf("\n\nSecond array: \n");
  90.     print(arr, size);
  91.  
  92.     free(arr);
  93.     free(arr2);
  94.  
  95.     system("PAUSE");
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement