Нужно сделать без мах (Упорядочить элементы массива по убыванию) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

вот код программы препод сказал что можно сделать без мах но я без понятия как...
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. int main(void)
  5. {
  6. const int N = 5;
  7. int arr[N];
  8. int i;
  9. for(i = 0; i < N; i++)
  10. {
  11. printf("Vvedite znachenia massiva %d=>",i);
  12. scanf("%d", &arr[i]);
  13. }
  14. int min = abs(arr[0]);
  15. int max = abs(arr[0]);
  16. int nomin = 0 ;
  17. int nomax = 0 ;
  18. int pr = 1;
  19. int buf;
  20. for(i = 1; i < N; i++)
  21. {
  22. if (abs( arr[i]) > max)
  23. {
  24. max = abs (arr[i]);
  25. nomax = i;
  26. }
  27. if (abs( arr[i]) < min)
  28. {
  29. min = abs (arr[i]);
  30. nomin = i;
  31. }
  32. }
  33. if(nomin > nomax)
  34. {
  35. buf=nomin;
  36. nomin=nomax;
  37. nomax=buf;
  38. }
  39. if (nomin < nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1)
  40. {
  41. for(i = nomin+1; i < nomax;i++)
  42. {
  43. pr*=arr[i];
  44. }
  45. }
  46. printf("pr= %d\n\n",pr);
  47. int j;
  48. for (i=0; i<N;i++)
  49. {
  50. for (j = 0; j < N-i-1; j++)
  51. {
  52. if (arr[j]<arr[j+1])
  53. {
  54. buf = arr[j];
  55. arr[j] = arr[j+1];
  56. arr[j+1] = buf;
  57. }
  58. }
  59. }
  60. for(i=0;i<N;i++)
  61. {
  62. printf("%d ",arr[i]);
  63. }
  64. return 0;
  65. }

Решение задачи: «Нужно сделать без мах (Упорядочить элементы массива по убыванию)»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #define N 5
  4. int main(void)
  5. {
  6.     int arr[N];
  7.     int i, j;
  8.     int nomin = 0 ;
  9.     int nomax = 0 ;
  10.     int pr = 1;
  11.     int buf;
  12.  
  13.     for(i = 0; i < N; i++)
  14.     {
  15.         printf("Vvedite znachenia massiva %d=>",i);
  16.         scanf("%d", &arr[i]);
  17.     }
  18.     for(i = 1; i < N; i++)
  19.     {
  20.         if (abs( arr[i]) > abs(arr[nomax]))
  21.         {
  22.             nomax = i;
  23.         }
  24.         if (abs( arr[i]) < abs(arr[nomin]))
  25.         {
  26.             nomin = i;
  27.         }
  28.     }
  29.  
  30.     if(nomin > nomax)
  31.     {
  32.         buf=nomin;
  33.         nomin=nomax;
  34.         nomax=buf;
  35.     }
  36.  
  37.     if (nomin < nomax && nomin != nomax && nomax != nomin-1 && nomax != nomin+1)
  38.     {
  39.         for(i = nomin+1; i < nomax;i++)
  40.         {
  41.             pr*=arr[i];
  42.         }
  43.  
  44.     }
  45.  
  46.     printf("pr= %d\n\n",pr);
  47.  
  48.     for (i=0; i<N;i++)
  49.     {
  50.         for (j = 0; j < N-i-1; j++)
  51.         {
  52.             if (arr[j]<arr[j+1])
  53.             {
  54.                 buf = arr[j];
  55.                 arr[j] = arr[j+1];
  56.                 arr[j+1] = buf;
  57.             }
  58.         }
  59.     }
  60.  
  61.     for(i=0;i<N;i++)
  62.     {
  63.         printf("%d ",arr[i]);
  64.     }
  65.     return 0;
  66. }

Объяснение кода листинга программы

  1. Ввод 5 чисел с клавиатуры, сохраняемых в массиве arr[5].
  2. Переменные:
    • nomin (именитель) содержит индекс наименьшего элемента.
    • nomax (номер максимального элемента) содержит индекс наибольшего элемента.
    • pr (произведение) используется для хранения произведения элементов, помещённых в кортеж.
    • buf (буфер) используется для временного хранения значений при перестановке элементов.
  3. Находим индекс наименьшего и наибольшего элемента массива с использованием функции abs() для получения абсолютного значения числа.
  4. Если наименьший элемент больше, чем два предыдущих, то меняем его местами с последним, а последний элемент помещаем на первое место.
  5. Если произведение элементов в кортеже (от nomin+1 до nomax) не равно наименьшему элементу, то находим произведение этих элементов и сохраняем в переменной pr.
  6. Сортировка массива по возрастанию с использованием алгоритма пузырька.
  7. Вывод отсортированного массива на экран.
  8. Возврат 0, т.е. успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы