Discussion in 'C Programming' started by alankrit, May 29, 2006.

1. alankritGuest

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 radixsort(long *a, long );
void radixpass(long *a, long *aux, long , int radix);
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<<"\n";

return 0;
}

void makerandom(long *a,long N)
{
for(int i=0;i<N;i++)
a=rand();
}

void radixsort(long *a,long N)
{
long *aux=(long *)malloc(N*sizeof(long));

free(aux);
}

void radixpass(long *a,long *aux, long N, int radix)
{
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, radix ) +1 ]++;

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

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

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

alankrit, May 29, 2006

2. santoshGuest

.... snip ...
This is a non-standard header. This group discusses ISO standard
compliant C programs.
This is a C++ header. This group is for C only. Post to comp.lang.c++.

.... snip code ...

santosh, May 29, 2006

3. Richard HeathfieldGuest

said:
Syntax error.
You do realise that + has a higher precedence than &, don't you? Use more
parentheses.
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, May 29, 2006
4. alankritGuest

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 radixsort(long *a, long );
void radixpass(long *a, long *aux, long , int radix);
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<<"\n";

return 0;
}

void makerandom(long *a,long N)
{
for(int i=0;i<N;i++)
a=rand();
}

void radixsort(long *a,long N)
{
long *aux=(long *)malloc(N*sizeof(long));

free(aux);
}

void radixpass(long *a,long *aux, long N, int radix)
{
long count;
long *cp=count;

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

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

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

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

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

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

alankrit, May 29, 2006
5. santoshGuest

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 ...
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.

santosh, May 29, 2006
6. Richard TobinGuest

.... a C program

Try a C++ newsgroup.

-- Richard

Richard Tobin, May 29, 2006
7. Barry SchwarzGuest

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

Remove del for email

Barry Schwarz, May 29, 2006
8. codergemGuest

Thanks friends.
finally i got my answer. codergem, May 29, 2006