I mean 35 before sorting, not after sorting.

Printable View

- 02-19-2009rushhour
- 02-19-2009laserlight
What is your current code?

- 02-19-2009rushhourCode:
`#include <iostream>`

#include <cstdlib>

#include <ctime>

using namespace std;

typedef int intArray[];

void generate(intArray nums, int size, int low, int high);

void bubSort(intArray nums, int size);

void displayNums(intArray nums, int size);

void display(int n);

bool notInOrder(int a, int b);

void swap(int& a, int& b);

int main()

{

const int MAX_SIZE = 5000; // arbitrary

int numbers[MAX_SIZE];

int howMany;

cout << "How many numbers to sort? ";

cin >> howMany;

if(howMany > MAX_SIZE)

{

howMany = MAX_SIZE;

}

generate(numbers, howMany, 0, 999);

cout << "Numbers generated..." << endl;

displayNums(numbers, howMany);

cout << endl;

bubSort(numbers, howMany);

cout << "After sorting..." << endl;

displayNums(numbers, howMany);

cout << endl;

}

void generate(intArray nums, int size, int low, int high)

{

int n, i = 0;

do

{

n = (rand() + time(0)) % 100;

if(n >= low && n <= high)

{

nums[i] = n;

i++;

}

}while (i <= size);

}

void bubSort(intArray nums, int size)

{

for(int k = size-1; k >= 0; k--)

{

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

{

if(notInOrder(nums[i],nums[i+1]))

{

swap(nums[i],nums[i+1]);

}

}

}

}

void displayNums(intArray nums, int size)

{

for(int s = 0; s < size; s++)

{

cout.width(4);

cout << nums[s];

if(s != 0 && s%15 == 0)

{

cout << endl;

}

}

}

bool notInOrder(int a, int b)

{

return (a > b);

}

void swap(int& a, int& b)

{

int temp;

temp = a;

a = b;

b = temp;

}

- 02-19-2009laserlight
You have an array out of bounds access in bubSort(). On the first iteration of the outer loop, k = size-1. However, the inner loop loops until and including the iteration where i = k. In that iteration, nums[i+1] is nums[k+1]. Since k = size - 1, that means that nums[k+1] is nums[size-1+1] which is nums[size], hence the array is accessed out of bounds.

- 02-19-2009rushhour
- 02-19-2009laserlightQuote:

Originally Posted by**rushhour**

- 02-19-2009rushhour