All pastes #1268002 Raw Edit

malloc median

public c v1 · immutable
#1268002 ·published 2008-11-26 22:40 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#define ELEM_SWAP(a,b) { register elem_type t=(a);(a)=(b);(b)=t; }#define median(a,n) kth_smallest(a,n,(((n)&1)?((n)/2):(((n)/2)-1))) typedef float elem_type ;elem_type kth_smallest(elem_type a[], int n, int k){    register i,j,l,m ;    register elem_type x ;    l=0 ; m=n-1 ;    while (l<m) {       x=a[k] ;       i=l ;       j=m ;       do {          while (a[i]<x) i++ ;          while (x<a[j]) j-- ;          if (i<=j) {             ELEM_SWAP(a[i],a[j]) ;             i++ ; j-- ;          }       } while (i<=j) ;       if (j<k) l=i ;       if (k<i) m=j ;  }																			        return a[k] ;}int main(int argc, char ** argv){	elem_type a[1000]; 	FILE *fwirth;        int i;	int size;	elem_type result;	int kapa;	if (argc != 2) {           printf("Correct usage: ./heap file_name (linux) or heap file_name (windows)\n");           exit(1);        }        	fwirth = fopen(argv[1], "r");	if (fwirth == NULL) {	   printf("Cannot open data file\n");	   exit(0);	}        fscanf(fwirth, "%d", &size);	printf("%d\n", size);	for (i = 0; i < size; i++) fscanf(fwirth, "%f", &a[i]);	kapa = size / 2;	printf("%d\n", kapa);	result = median(a, size/2);	printf("%f\n", median(a,size));   }