08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

#include <br />

#include <br />

#include <br />

#define SIZE 10<br />

typedef unsigned char BYTE;<br />

void gswap(void *vp1, void *vp2, size_t nbytes)<br />

{<br />

unsigned char *p1 = (unsigned char *)vp1;<br />

unsigned char *p2 = (unsigned char *)vp2;<br />

unsigned char temp;<br />

}<br />

while (nbytes--) {<br />

temp = *p1;<br />

*p1++ = *p2;<br />

*p2++ = temp;<br />

}<br />

void bsort(void *vparray, size_t nelem, size_t width, int (*compare)(const<br />

void *, const void *))<br />

{<br />

size_t i, j;<br />

BYTE *base = (BYTE *)vparray;<br />

}<br />

for (i = 0; i < nelem - 1; i++)<br />

for (j = 0; j < nelem - 1 - i; j++)<br />

if (compare(base + j * width, base + (j + 1) * width) > 0)<br />

gswap(base + j * width, base + (j + 1) * width, width);<br />

int cmp_int(const void *vp1, const void *vp2)<br />

{<br />

return *(const int *)vp1 - *(const int *)vp2;<br />

}<br />

int cmp_double(const void *vp1, const void *vp2)<br />

{<br />

const double *dp1 = (const double *) vp1;<br />

const double *dp2 = (const double *) vp2;<br />

if (*dp1 < *dp2)<br />

return -1;<br />

}<br />

return *dp1 > *dp2;<br />

int main()<br />

{<br />

int k;<br />

double ad[SIZE] = {4.3, 7.4, 2.7, 8.88, 66.99, 4.8, 90.67, 23.87, 7.89,<br />

10.87};<br />

int ai[SIZE] = {12, 4, 56, 45, 23, 60, 17, 56, 29, 1};<br />

bsort(ad, SIZE, sizeof(double), cmp_double);<br />

bsort(ai, SIZE, sizeof(int), cmp_int);<br />

for (k = 0; k < SIZE; ++k)<br />

printf("%.2lf ", ad[k]);<br />

513

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!