alankrit@gmail.com
Guest
Posts: n/a

 05-29-2006
Helo
This is a code for Radix sort. n it is giving a run-time Error :
"Run-Time Check Failure #2 - Stack around the variable 'count' was
corrupted."

I have cross checked this code a millions of times.
what is the problem here..??????????????????

#include "stdafx.h"
#include<iostream>
#include<stdlib.h>

using namespace std;

#define CHAR_BIT 8
#define UCHAR_MAX 0xff
#define RANGE ((1U << CHAR_BIT)+1)
#define digit(x,i) ( (x) >> ( (i) * CHAR_BIT) ) & UCHAR_MAX
#define SIZE 100

void makerandom(long *a, long );

int _tmain(int argc, _TCHAR* argv[])
{
long data[SIZE];
makerandom(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();
}

{
long *aux=(long *)malloc(N*sizeof(long));

free(aux);
}

{
long count[RANGE];
long *cp=count;

for(int i=0;i<RANGE;i++,cp++)
*cp=0;

for(int i=0;i<N;i++)
count[ digit( a[i], radix ) +1 ]++;

for(int i=0;i< RANGE;i++)
count[i+1]+=count[i];

for(int i=0;i<N;i++)

for(int i=0;i<N;i++)
a[i]=aux[i];
}

santosh
Guest
Posts: n/a

 05-29-2006
http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:
> Helo
> This is a code for Radix sort. n it is giving a run-time Error :

.... snip ...

> #include "stdafx.h"

This is a non-standard header. This group discusses ISO standard
compliant C programs.

> #include<iostream>

This is a C++ header. This group is for C only. Post to comp.lang.c++.

.... snip code ...

Richard Heathfield
Guest
Posts: n/a

 05-29-2006
(E-Mail Removed) said:

> Helo
> This is a code for Radix sort. n it is giving a run-time Error :
> "Run-Time Check Failure #2 - Stack around the variable 'count' was
> corrupted."
>
> I have cross checked this code a millions of times.
> what is the problem here..??????????????????
>
> #include "stdafx.h"

> #include<iostream>

> #include<stdlib.h>
>
> using namespace std;

Syntax error.

> #define CHAR_BIT 8
> #define UCHAR_MAX 0xff

See <limits.h>

> #define RANGE ((1U << CHAR_BIT)+1)
> #define digit(x,i) ( (x) >> ( (i) * CHAR_BIT) ) & UCHAR_MAX

You do realise that + has a higher precedence than &, don't you? Use more
parentheses.

> #define SIZE 100
>
> void radixsort(long *a, long );
> void makerandom(long *a, long );
>
>
> int _tmain(int argc, _TCHAR* argv[])

There seems little point in continuing this analysis, since you don't appear
to have done the minimal research necessary to learn how C defines the
entry point to a program.

--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at above domain (but drop the www, obviously)

alankrit@gmail.com
Guest
Posts: n/a

 05-29-2006
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>

using namespace std;

#define digit(x,i) (( (x) >> ( (i) * 8 ) ) & 0xff )
#define SIZE 100

void makerandom(long *a, long );

int _tmain(int argc, _TCHAR* argv[])
{
long data[SIZE];
makerandom(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();
}

{
long *aux=(long *)malloc(N*sizeof(long));

free(aux);
}

{
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++)

for(int i=0;i<N;i++)
a[i]=aux[i];
}

Syntax error.

> #define CHAR_BIT 8
> #define UCHAR_MAX 0xff

Hey BTW i dont how to use these constants.Cud u plz temme how to use
it?
thanks.

santosh
Guest
Posts: n/a

 05-29-2006
(E-Mail Removed) 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>

You're repeatedly posting non-C code. This group only discusses
standard C. I suggest that you post to a C++ group like comp.lang.c++
or better yet, a group devoted for your particular platform. If I'm
right, this is a Windows program. Post to a group in the
comp.os.ms-windows.* hierarchy.
.... snip code ...

> Hey BTW i dont how to use these constants.Cud u plz temme how to use it?

If you need to learn the rudimentary usage of variables and constants a
good text on ISO C or C++ programming will be more suitable than asking
questions here and waiting for a response.

Study and work through a book like "The C Programming Langauge 2 Ed.",
and if you encounter problems within specific areas, you can post here.

Richard Tobin
Guest
Posts: n/a

 05-29-2006
In article <(E-Mail Removed) .com>,
<(E-Mail Removed)> wrote:

>Well i have made the following changes.But still its not [...]

.... a C program

Try a C++ newsgroup.

-- Richard

Barry Schwarz
Guest
Posts: n/a

 05-29-2006
On 29 May 2006 07:20:33 -0700, (E-Mail Removed) wrote:

>Well i have made the following changes.But still its not working,
>giving the same run-time error.

Please post C++ questions to a C++ group. This group deals only with
C.

Remove del for email

codergem
Guest
Posts: n/a

 05-29-2006
Thanks friends.