Order by pair comparisons: Difference between revisions
Content added Content deleted
(→{{header|C++}}: add c++ way using standard sort) |
(→{{header|C++}}: added c) |
||
Line 28: | Line 28: | ||
* A routine that does not ask the user "too many" comparison questions should be used. |
* A routine that does not ask the user "too many" comparison questions should be used. |
||
<br><br> |
<br><br> |
||
=={{header|C}}== |
|||
Using qsort; not very efficient |
|||
<lang c>#include <stdio.h> |
|||
#include <string.h> |
|||
#include <stdlib.h> |
|||
int interactiveCompare(const void *x1, const void *x2) |
|||
{ |
|||
const char *s1 = *(const char * const *)x1; |
|||
const char *s2 = *(const char * const *)x2; |
|||
static int count = 0; |
|||
printf("(%d) Is %s <, ==, or > %s? Answer -1, 0, or 1: ", ++count, s1, s2); |
|||
int response; |
|||
scanf("%d", &response); |
|||
return response; |
|||
} |
|||
void printOrder(const char *items[], int len) |
|||
{ |
|||
printf("{ "); |
|||
for (int i = 0; i < len; ++i) printf("%s ", items[i]); |
|||
printf("}\n"); |
|||
} |
|||
int main(void) |
|||
{ |
|||
const char *items[] = |
|||
{ |
|||
"violet", "red", "green", "indigo", "blue", "yellow", "orange" |
|||
}; |
|||
qsort(items, sizeof(items)/sizeof(*items), sizeof(*items), interactiveCompare); |
|||
printOrder(items, sizeof(items)/sizeof(*items)); |
|||
return 0; |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
(1) Is violet <, ==, or > red? Answer -1, 0, or 1: 1 |
|||
(2) Is violet <, ==, or > green? Answer -1, 0, or 1: 1 |
|||
(3) Is red <, ==, or > green? Answer -1, 0, or 1: -1 |
|||
(4) Is violet <, ==, or > indigo? Answer -1, 0, or 1: 1 |
|||
(5) Is green <, ==, or > indigo? Answer -1, 0, or 1: -1 |
|||
(6) Is violet <, ==, or > blue? Answer -1, 0, or 1: 1 |
|||
(7) Is indigo <, ==, or > blue? Answer -1, 0, or 1: 1 |
|||
(8) Is green <, ==, or > blue? Answer -1, 0, or 1: -1 |
|||
(9) Is violet <, ==, or > yellow? Answer -1, 0, or 1: 1 |
|||
(10) Is indigo <, ==, or > yellow? Answer -1, 0, or 1: 1 |
|||
(11) Is blue <, ==, or > yellow? Answer -1, 0, or 1: 1 |
|||
(12) Is green <, ==, or > yellow? Answer -1, 0, or 1: 1 |
|||
(13) Is red <, ==, or > yellow? Answer -1, 0, or 1: -1 |
|||
(14) Is violet <, ==, or > orange? Answer -1, 0, or 1: 1 |
|||
(15) Is indigo <, ==, or > orange? Answer -1, 0, or 1: 1 |
|||
(16) Is blue <, ==, or > orange? Answer -1, 0, or 1: 1 |
|||
(17) Is green <, ==, or > orange? Answer -1, 0, or 1: 1 |
|||
(18) Is yellow <, ==, or > orange? Answer -1, 0, or 1: 1 |
|||
(19) Is red <, ==, or > orange? Answer -1, 0, or 1: -1 |
|||
{ red orange yellow green blue indigo violet } |
|||
</pre> |
|||
=={{header|C++}}== |
=={{header|C++}}== |