Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<math.h>
- #include<stdio.h>
- #include<malloc.h>
- // функция ввода массива, указатель на начало массива передается результатом,
- // через параметр передается переменная для хранения размера массива
- double * input_array(int * psize)
- {
- printf("Input array size: ");
- scanf("%d", psize);
- // выделение памяти: (*psize) элементов, каждый размера под double
- // *psize - это значение, которое лежит по адресу в указателе n
- double * arr = malloc(*psize * sizeof(double)); // выделение памяти под массив
- // ввод элементов массива
- for(int i=0; i<*psize; ++i)
- {
- printf("Input element #%d: ", i + 1); // Input element #1:
- scanf("%lf", arr + i); // ввод в массив arr[0], arr[1] ...
- }
- return arr; // возвращаем массив
- }
- // функция вывода на экран: первый параметр - массив, второй - количество элементов в массиве
- void print_array(double * arr, int n)
- {
- printf("Array of %d elements:\n", n);
- for(int i=0; i<n; ++i)
- printf("#%d - %lf\n", i + 1, arr[i]);
- }
- // получаем указатель на массив и количество элементов, которые изменяем
- void task(double *arr, int *n)
- {
- int x, k = *n;
- printf("Input number: ");
- scanf("%d", &x);
- for(int i=0; i<k; ++i)
- {
- if ( x > fabs(arr[i]) )
- {
- // удаление элемента i
- for(int j=i; j < k-1; ++j)
- arr[j] = arr[j + 1];
- k--; // уменьшили размер массива
- i--; // возвращение к предыдущему элементу
- }
- }
- *n = k; // сохраняем новый размер
- }
- int main()
- {
- int n = 0;
- double * arr = input_array( &n );
- task(arr, &n);
- print_array(arr, n);
- if (arr != 0) free(arr); // освобождаем память, если она была выеделена
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement