Вывод найденных элементов в обратном порядке - C (СИ)
Формулировка задачи:
такое дело, необходимо было найти 3 минимальных элементы в одномерном массиве А(30), что я и сделала. Теперь нужно переставить их местами в обратном порядке. Подскажите пожалуйста, как это сделать.
#include "stdafx.h" #include "stdio.h" #include "math.h" #include "conio.h" #include <cmath> #include <Windows.h> #include <cstdlib> int _tmain(int argc, _TCHAR* argv[]) { SetConsoleOutputCP(1251); int A[100], n=100; int i=0, min, min1, min2, k, k1, k2; printf ("Vvedite razmernost'\n"); scanf_s ("%d", &n); for(int i=0; i < n; i++){ A[i] = rand()%100; printf("A[%d]=%d\n", i, A[i]); min=*A; min1=*(A+1); min2=*(A+2); } for (i=0; i<n; i++) { if (A[i] < min){ min2 = min1; min1 = min; min = A[i]; } if ((A[i] != min) && (A[i] <= min1)) { min2 = min1; min1 = A[i]; } if ((A[i] != min) && (A[i] != min1) && (A[i] <= min2)) { min2 = A[i]; } } for (i=0; i<n; i++) { if (A[i] == min) k = i; if (A[i] == min1) k1 = i; if (A[i] == min2) k2 = i; } printf("4islo: %d, %d, %d. \n",min,min1,min2); printf("Nomer: %d, %d, %d. \n",k,k1,k2); _getch(); return 0; }
Решение задачи: «Вывод найденных элементов в обратном порядке»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define SIZE 30 int main(void) { int arr[SIZE], i, *min1 = arr, *min2 = arr, *min3 = arr, *first, *last; srand(time(NULL)); for (i = 0; i < SIZE; i++) { arr[i] = rand() % 100; printf("%d ", arr[i]); } for (i = 1; i < SIZE; i++) if (arr[i] < *min1) min1 = &arr[i]; for (i = 1; i < SIZE; i++) if (arr[i] < *min2 && min1 != &arr[i]) min2 = &arr[i]; for (i = 1; i < SIZE; i++) if (arr[i] < *min3 && min1 != &arr[i] && min2 != &arr[i]) min3 = &arr[i]; if (min1 < min2) { if (min1 < min3) { first = min1; last = min2 < min3 ? min3 : min2; } else { first = min3; last = min2; } } else if (min1 < min3) { first = min2; last = min3; } else { first = min2 < min3 ? min2 : min3; last = min1; } printf("\nmin1=%d, min2=%d, min3=%d,\nfirst min=%d, last min=%d\n", *min1, *min2, *min3, *first, *last); *first ^= *last ^= *first ^= *last; /* XOR swap */ for (i = 0; i < SIZE; i++) printf("%d ", arr[i]); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C и решается задача поиска минимального элемента в массиве. Список действий:
- Объявляются переменные: массив arr, счетчик i, указатели min1, min2, min3, first и last.
- Заполняется массив arr случайными числами с помощью функции rand() и выводится на экран.
- Находится первый минимальный элемент min1.
- Находится второй минимальный элемент min2.
- Находится третий минимальный элемент min3.
- Вычисляются значения first и last, которые будут указывать на первый и последний минимальные элементы в порядке возрастания.
- Используется операция XOR для обмена значений first и last.
- Выводится на экран массив arr в обратном порядке.
- Программа завершается возвратом значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д