Вывод найденных элементов в обратном порядке - C (СИ)

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

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

такое дело, необходимо было найти 3 минимальных элементы в одномерном массиве А(30), что я и сделала. Теперь нужно переставить их местами в обратном порядке. Подскажите пожалуйста, как это сделать.
Листинг программы
  1. #include "stdafx.h"
  2. #include "stdio.h"
  3. #include "math.h"
  4. #include "conio.h"
  5. #include <cmath>
  6. #include <Windows.h>
  7. #include <cstdlib>
  8.  
  9. int _tmain(int argc, _TCHAR* argv[])
  10. {
  11. SetConsoleOutputCP(1251);
  12. int A[100], n=100;
  13. int i=0, min, min1, min2, k, k1, k2;
  14. printf ("Vvedite razmernost'\n");
  15. scanf_s ("%d", &n);
  16. for(int i=0; i < n; i++){
  17. A[i] = rand()%100;
  18. printf("A[%d]=%d\n", i, A[i]);
  19.  
  20. min=*A;
  21. min1=*(A+1);
  22. min2=*(A+2);
  23. }
  24. for (i=0; i<n; i++)
  25. {
  26. if (A[i] < min){
  27. min2 = min1;
  28. min1 = min;
  29. min = A[i];
  30. }
  31. if ((A[i] != min) && (A[i] <= min1)) {
  32. min2 = min1;
  33. min1 = A[i];
  34. }
  35. if ((A[i] != min) && (A[i] != min1) && (A[i] <= min2)) {
  36. min2 = A[i];
  37. }
  38. }
  39. for (i=0; i<n; i++)
  40. {
  41. if (A[i] == min)
  42. k = i;
  43. if (A[i] == min1)
  44. k1 = i;
  45. if (A[i] == min2)
  46. k2 = i;
  47. }
  48. printf("4islo: %d, %d, %d. \n",min,min1,min2);
  49. printf("Nomer: %d, %d, %d. \n",k,k1,k2);
  50. _getch();
  51. return 0;
  52. }

Решение задачи: «Вывод найденных элементов в обратном порядке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define SIZE 30
  5.  
  6. int main(void)
  7. {
  8.     int arr[SIZE], i, *min1 = arr, *min2 = arr, *min3 = arr, *first, *last;
  9.     srand(time(NULL));
  10.    
  11.     for (i = 0; i < SIZE; i++)
  12.     {
  13.         arr[i] = rand() % 100;
  14.         printf("%d ", arr[i]);
  15.     }
  16.     for (i = 1; i < SIZE; i++)
  17.         if (arr[i] < *min1)
  18.             min1 = &arr[i];
  19.     for (i = 1; i < SIZE; i++)
  20.         if (arr[i] < *min2 && min1 != &arr[i])
  21.             min2 = &arr[i];
  22.     for (i = 1; i < SIZE; i++)
  23.         if (arr[i] < *min3 && min1 != &arr[i] && min2 != &arr[i])
  24.             min3 = &arr[i];
  25.    
  26.     if (min1 < min2)
  27.     {
  28.         if (min1 < min3)
  29.         {
  30.             first = min1;
  31.             last = min2 < min3 ? min3 : min2;
  32.         }
  33.         else
  34.         {
  35.             first = min3;
  36.             last = min2;
  37.         }
  38.     }
  39.     else if (min1 < min3)
  40.     {
  41.         first = min2;
  42.         last = min3;
  43.     }
  44.     else
  45.     {
  46.         first = min2 < min3 ? min2 : min3;
  47.         last = min1;
  48.     }
  49.     printf("\nmin1=%d, min2=%d, min3=%d,\nfirst min=%d, last min=%d\n", *min1, *min2, *min3, *first, *last);
  50.     *first ^= *last ^= *first ^= *last; /* XOR swap */
  51.  
  52.     for (i = 0; i < SIZE; i++)
  53.         printf("%d ", arr[i]);
  54.  
  55.     return 0;
  56. }

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

В этом коде используется язык программирования C и решается задача поиска минимального элемента в массиве. Список действий:

  1. Объявляются переменные: массив arr, счетчик i, указатели min1, min2, min3, first и last.
  2. Заполняется массив arr случайными числами с помощью функции rand() и выводится на экран.
  3. Находится первый минимальный элемент min1.
  4. Находится второй минимальный элемент min2.
  5. Находится третий минимальный элемент min3.
  6. Вычисляются значения first и last, которые будут указывать на первый и последний минимальные элементы в порядке возрастания.
  7. Используется операция XOR для обмена значений first и last.
  8. Выводится на экран массив arr в обратном порядке.
  9. Программа завершается возвратом значения 0.

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


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

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

12   голосов , оценка 4.417 из 5

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

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

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