fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // Функция сравнения для qsort
  5. int compare(const void *a, const void *b) {
  6. double arg1 = *(const double*)a;
  7. double arg2 = *(const double*)b;
  8. if (arg1 < arg2) return -1;
  9. if (arg1 > arg2) return 1;
  10. return 0;
  11. }
  12.  
  13. int main() {
  14. int n;
  15. printf("Введите размер массива: ");
  16. scanf("%d", &n);
  17.  
  18. // Выделяем память под массивы
  19. double *x = (double*)malloc(n * sizeof(double));
  20. double *y = (double*)malloc(n * sizeof(double));
  21.  
  22. // Ввод элементов массива x
  23. printf("Введите элементы массива x:\n");
  24. for (int i = 0; i < n; i++) {
  25. scanf("%lf", &x[i]);
  26. }
  27.  
  28. // Формирование массива y (только отрицательные элементы x, деленные на 2)
  29. int count = 0; // Счетчик элементов в y
  30. for (int i = 0; i < n; i++) {
  31. if (x[i] < 0) {
  32. y[count] = x[i] / 2.0;
  33. count++;
  34. }
  35. }
  36.  
  37. // Сортировка массива y по возрастанию
  38. qsort(y, count, sizeof(double), compare);
  39.  
  40. // Вывод результатов
  41. printf("\nРезультат:\n");
  42. printf("Массив y (сжатый, отсортированный):\n");
  43. for (int i = 0; i < count; i++) {
  44. printf("%.2f ", y[i]);
  45. }
  46. printf("\n");
  47.  
  48. // Освобождение памяти
  49. free(x);
  50. free(y);
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 5276KB
stdin
3
-3 5 -8
stdout
Введите размер массива: Введите элементы массива x:

Результат:
Массив y (сжатый, отсортированный):
-4.00 -1.50