|
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define N 26
void arrayRandomGenerate(int *aa, int n, int c) {
int i;
srand(7);
for (i = 0; i < n; ++i) {
aa[i] = rand() % c;
}
}
void indecesPrint(int n) {
int i;
for (i = 0; i < n; ++i) {
printf("%2d ", i);
}
printf("\n");
}
void arrayPrint(int *aaa, int n) {
int i;
for (i = 0; i < n; ++i) {
printf("%2d ", aaa[i]);
}
printf("\n");
}
int ordinarAscend(int x, int y) {
return x < y;
}
int ordinarDescend(int x, int y) {
return x > y;
}
int impairPairAscend(int x, int y) {
return (x % 2 > y % 2) || ((x % 2 == y % 2) && (x < y));
}
int impairImpairPairPairAscend(int x, int y) {
return (x % 2 == y % 2) && (x < y);
}
int indMin(int (* pRRR)(int, int), int *aaaa, int i, int n) {
int j, ii;
ii = i;
for (j = i + 1; j < n; ++j) {
if (pRRR(aaaa[j], aaaa[ii])) {
ii = j;
}
}
return ii;
}
void swap(int *bb, int iii, int jjj) {
int pom;
pom = bb[iii];
bb[iii] = bb[jjj];
bb[jjj] = pom;
}
/**
* SELECT SORT
*/
void sort(int (* pRR)(int, int), int *b, int n) {
int i, imin;
for (i = 0; i < n; ++i) {
imin = indMin(pRR, b, i, n);
swap(b, i, imin);
}
} | |
|
int main() {
int a[N];
int (* pR)(int, int);
unsigned char o;
printf("Ruzne \"sorty\":\na) bezny vzestupne\nb) bezny sestupne\nc) vzestupne licha a za nimi "
"suda\nd) vzestupne licha na mistech lichych a suda na mistech sudych\nZadej: ");
scanf("%c", &o);
if (tolower(o) == 'a') {
pR = ordinarAscend;
} else if (tolower(o) == 'b') {
pR = ordinarDescend;
} else if (tolower(o) == 'c') {
pR = impairPairAscend;
} else if (tolower(o) == 'd') {
pR = impairImpairPairPairAscend;
} else {
printf("Nebyla zadana zadna z nabizenych moznosti.\nProgram konci.\n");
return 1;
}
arrayRandomGenerate(a, N, 100);
indecesPrint(N);
arrayPrint(a, N);
sort(pR, a, N);
arrayPrint(a, N);
printf("Program konci.\n");
return 0;
} | | | Trochu lep¹í verse toho vlevoint main() {
int a[N];
int (* pR[4])(int, int) = {ordinarAscend, ordinarDescend, impairPairAscend, impairImpairPairPairAscend};
unsigned char o;
printf("Ruzne \"sorty\":\na) bezny vzestupne\nb) bezny sestupne\nc) vzestupne licha a za nimi "
"suda\nd) vzestupne licha na mistech lichych a suda na mistech sudych\nZadej: ");
scanf("%c", &o);
if ((tolower(o) < 'a') || (tolower(o) > 'd')) {
printf("Nebyla zadana zadna z nabizenych moznosti.\nProgram konci.\n");
return 1;
}
arrayRandomGenerate(a, N, 100);
indecesPrint(N);
arrayPrint(a, N);
sort(pR[tolower(o)-'a'], a, N);
arrayPrint(a, N);
printf("Program konci.\n");
return 0;
} | |