Составить функцию сортировки значений трех переменных а, b, с в порядке возрастания - C (СИ)
Формулировка задачи:
Составить функцию сортировки значений трех переменных а, b, с в порядке возрастания. Использовать указатели.
Вот есть код сортировки, но без указателей.
Кто подскажет как это реализовать спомощью указателей?
# include <stdio.h>
# include <time.h>
# include <stdlib.h>
# include <locale.h>
# include <windows.h>
void main()
{
int a[3], i, j, n, tmp;
setlocale(LC_ALL, "russian");
printf("Введите a b c \n ");
for (i = 0; i < 3; i++)
{
scanf_s("%d", &n);
a[i] = n;
}
for (i = 0; i < 3; i++)
for (j = i + 1; j<3; j++)
if (a[i]>a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
printf("\n Отсортированный массив\n");
for (i = 0; i < 3; i++)
{
printf("%d ", a[i]);
}
printf("\n");
system("pause");
}Решение задачи: «Составить функцию сортировки значений трех переменных а, b, с в порядке возрастания»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
struct ORDER
{ int min, middle, max;
};
void arrange(ORDER *order, int a, int b, int c)
{ if(a>b)
{ if(b>c)
{ order->min = c;
order->middle = b;
order->max = a;
}
else if(a>c)
{ order->min = b;
order->middle = c;
order->max = a;
}
else
{ order->min = b;
order->middle = a;
order->max = c;
}
}
else
{ if(b<c)
{ order->min = a;
order->middle = b;
order->max = c;
}
else if(a<c)
{ order->min = a;
order->middle = c;
order->max = b;
}
else
{ order->min = c;
order->middle = a;
order->max = b;
}
}
}
int main()
{ int a,b,c;
ORDER *order = (ORDER*)malloc(sizeof(ORDER));
printf("Enter three integers\n");
scanf("%d%d%d", &a, &b, &c);
arrange(order, a, b, c);
printf("Ordered as increasing sequence\n");
printf("%5d%5d%5d", order->min, order->middle, order->max);
fflush(stdin);
free(order);
getchar();
return 0;
}