DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   what is the error (http://www.daniweb.com/forums/thread21630.html)

some one Apr 8th, 2005 12:50 pm
what is the error
 
please where is the error in this code doesn't run
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
  int ages[1000];
  int size=1000;
  int i,a,b;
  for( i=0;i<size;i++)
  {
    ages[i]=rand();
    for( a=1;a<size;a++)
    {
      for( b=size-1;b>=a;b--)
      {
        if(ages[b-1]<ages[b])
        {
          i=ages[b-1];
          ages[b-1]=ages[i];
          ages[b]=i;
        }
      }
    }
  }
  cout<<ages[i];

  return 0;
}
Code indented and tags added. -Narue

Narue Apr 8th, 2005 1:01 pm
Re: what is the error
 
>ages[b-1]=ages[i];
That's your error. i isn't an index, it's a content value, and the value could very well exceed 999, which is the largest possible index for ages. Change that line to:
ages[b-1]=ages[b];
You probably also want to restructure your code so that it has specific sections for initializing the array, sorting the array, and printing the sorted array:
#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{
  int ages[1000];
  int size=1000;
  int i,a,b;
  for(i=0;i<size;i++)
  {
    ages[i]=rand();
  }
  for( a=1;a<size;a++)
  {
    for( b=size-1;b>=a;b--)
    {
      if(ages[b-1]<ages[b])
      {
        i=ages[b-1];
        ages[b-1]=ages[b];
        ages[b]=i;
      }
    }
  }
  for( i=0;i<size;i++)
  {
    cout<<ages[i]<<' ';
  }

  return 0;
}
I'm also not sure if you really wanted this functionality or not, but as it is the sort is descending, not ascending, which is the most common preference.

some one Apr 8th, 2005 1:11 pm
Re: what is the error
 
thanks a lot Naure


All times are GMT -4. The time now is 4:54 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC