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

Recommended Answers

All 2 Replies

>ages[b-1]=ages;
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.

thanks a lot Naure

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.