/* lajittelu2.c */ /* 180598 SJ */ #include #include #define MAX 100 int floatless(float *eka, float *toka) { if ( *eka < *toka ) return -1; else if ( *eka > *toka ) return 1; else return 0; } /* floatless() */ /* jos kääntäjän herjat häiritsevät, pikkutarkka voisi käyttää tälläistä */ int floatless2(const void *eka, const void *toka) { return floatless((float*)eka, (float*)toka); } /* intless: vain esimerkkinä, ei käytetä tässä */ int intless(int *eka, int *toka) { return *eka - *toka; } int main() { int n = 0; float a, t[MAX]; printf("Anna liukulukuja, 0.0 lopuksi \n"); scanf("%f", &a); while (a != 0.0 && n < MAX) { t[n++] = a; scanf("%f", &a); } qsort(t, n, sizeof(float), floatless); putchar('\n'); printf("Kokeillaan, mitä syötit \n"); printf("Anna liukulukuja, 0.0 lopuksi \n"); scanf("%f", &a); while (a != 0.0) { if (bsearch(&a, t, n, sizeof(float), floatless)) printf("Sen syötit aiemmin\n"); else printf("Sitä et aiemmin syöttänyt\n"); scanf("%f", &a); } exit(0); } /* main() */