Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************
- Сгенерировать одномерный динамический массив из N целых элементов, число N считать с клавиатуры (сделать цикл, который не позволит программе продолжиться, пока не будет введено 4 < N < 128). В этом массиве найти максимальный из отрицательных элементов и поменять его местами с последним элементом массива. Вывести оба массива.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void generate(int* arr, int size)
- {
- srand(time(NULL));
- for (unsigned i = 0; i < size; ++i)
- {
- arr[i] = rand() % 201 - 100;
- }
- }
- unsigned findMaxNegative(const int* arr, int size)
- {
- unsigned index = 0;
- int temp = INT_MIN;
- for (unsigned i = 0; i < size; ++i)
- {
- if (arr[i] > temp && arr[i] < 0)
- {
- index = i;
- temp = arr[i];
- //printf("i - %d | temp - %d\n", i, temp); // Test
- }
- }
- return index;
- }
- void arrCopy(int* arrRes, const int* arrSource, int size)
- {
- for (unsigned i = 0; i < size; ++i)
- {
- arrRes[i] = arrSource[i];
- }
- }
- void print(const int* arr, int size)
- {
- for (unsigned i = 0; i < size; ++i)
- {
- printf("%d ", arr[i]);
- }
- }
- int main()
- {
- unsigned int size = 0;
- // Input.
- do
- {
- system("cls");
- printf("Enter array size: ");
- scanf_s("%u", &size);
- } while (size < 5 || size > 127);
- int* arr = (int*)malloc(size * sizeof(int));
- int* arr2 = (int*)malloc(size * sizeof(int));
- // Generate, copy to arr2 and search.
- generate(arr, size);
- arrCopy(arr2, arr, size);
- unsigned index = findMaxNegative(arr, size);
- // Change places.
- int temp = arr[index];
- arr[index] = arr[size - 1];
- arr[size - 1] = temp;
- system("cls");
- printf("First array: \n");
- print(arr2, size);
- printf("\n\nSecond array: \n");
- print(arr, size);
- free(arr);
- free(arr2);
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement