Re: PLease help me.Wots the problem with following code....?
codergem wrote:
Well i have made the following changes.But still its not working,
giving the same run-time error.
and header files are all correct.
// Radix_Sort_1.cpp : Defines the entry point for the console
application.
//
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
Replace by:
#include <iostream>
#include <cstdlib>
#include <climits>
using namespace std;
#define digit(x,i) (( (x) >> ( (i) * 8 ) ) & 0xff )
#define SIZE 100
Replace by:
using namespace std;
template < typename T >
inline
T digit ( T x, unsigned short i ) {
return (( (x) >> ( (i) * CHAR_BIT ) ) & UCHAR_MAX );
}
const unsigned long SIZE = 100;
void radixsort(long *a, long );
void radixpass(long *a, long *aux, long , int radix);
void makerandom(long *a, long );
Ok.
int _tmain(int argc, _TCHAR* argv[])
Replace by:
int main(int argc, char* argv[])
{
long data[SIZE];
makerandom(data,SIZE);
radixsort(data,SIZE);
for(int i=0;i<SIZE;i++)
cout<<data[i]<<"\n";
return 0;
}
void makerandom(long *a,long N)
{
for(int i=0;i<N;i++)
a[i]=rand();
}
void radixsort(long *a,long N)
{
long *aux=(long *)malloc(N*sizeof(long));
for(int radix=0;radix< sizeof(*a);radix++)
radixpass(a,aux,N,radix);
free(aux);
}
void radixpass(long *a,long *aux, long N, int radix)
{
long count[257];
long *cp=count;
for(int i=0;i<257;i++,cp++)
*cp=0;
for(int i=0;i<N;i++)
count[ digit( a[i], radix ) +1 ]++;
for(int i=0;i< 257;i++)
count[i+1]+=count[i];
for(int i=0;i<N;i++)
aux[ count[digit(a[i],radix)]++ ]=a[i];
for(int i=0;i<N;i++)
a[i]=aux[i];
}
Syntax error.
#define CHAR_BIT 8
#define UCHAR_MAX 0xff
#include <climits>
Hey BTW i dont know how to use these constants.Cud u plz temme how to
use
it?
these r defined in limits.h
???. I am not a native speaker of English. It will greatly ease
communication if you could write something that resembles more closely the
language I my teachers taught me.
Best
Kai-Uwe Bux