PLease help me.Wots the problem with following code....?

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

  1. Guest

    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);

    radixsort(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));

    for(int radix=0;radix< sizeof(*a);radix++)
    radixpass(a,aux,SIZE,radix);

    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++)
    aux[ count[digit(a,radix)]++ ]=a;

    for(int i=0;i<N;i++)
    a=aux;
    }
     
    , May 29, 2006
    #1
    1. Advertising

  2. santosh Guest

    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 ...
     
    santosh, May 29, 2006
    #2
    1. Advertising

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


    Non-standard header.

    > #include<iostream>


    Non-standard header.

    > #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 radixpass(long *a, long *aux, long , int radix);
    > 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)
     
    Richard Heathfield, May 29, 2006
    #3
  4. Guest

    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);

    radixsort(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));

    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, radix ) +1 ]++;

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

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

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


    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.
     
    , May 29, 2006
    #4
  5. santosh Guest

    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.
     
    santosh, May 29, 2006
    #5
  6. In article <>,
    <> wrote:

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


    .... a C program

    Try a C++ newsgroup.

    -- Richard
     
    Richard Tobin, May 29, 2006
    #6
  7. On 29 May 2006 07:20:33 -0700, 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
     
    Barry Schwarz, May 29, 2006
    #7
  8. codergem Guest

    Thanks friends.
    finally i got my answer. :)
     
    codergem, May 29, 2006
    #8
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Luke Smith

    wots wrong here?

    Luke Smith, Nov 29, 2003, in forum: ASP .Net
    Replies:
    2
    Views:
    636
    Luke Smith
    Nov 29, 2003
  2. KK
    Replies:
    2
    Views:
    598
    Big Brian
    Oct 14, 2003
  3. Replies:
    5
    Views:
    331
    Jim Langston
    May 30, 2006
  4. timr
    Replies:
    9
    Views:
    189
  5. rusi
    Replies:
    0
    Views:
    100
Loading...

Share This Page