Вывод найденных элементов в обратном порядке - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д