How would I change the size of the positive and negative arrays so that it doesn't print out the total size of the original array? The way i have it set up now, it prints out the positive numbers, and the rest of the array is filled with 0's.
Here's a sample of my output:
Original array: -12, -8, 9, 4, 5
Reversed array: 5, 4, 9, -8, -12
Maximum value = 9
Minimum value= -12
Sorted array: -12, -8, 4, 5, 9
Smallest spread = 1
Largest spread = 12
Positive array: 4, 5, 9, 0, 0
Negative array: -12, -8, 0, 0, 0
Press any key to continue
This is my code as I have it now:
#include<iostream.h>
int get_array(int array[], int& size);
void display_array(int array[], int size);
void reverse_array(int array[], int size);
int find_max(int array[], int size, int& max);
int find_min(int array[], int size, int& min);
void sort_array(int array[], int size);
int smallest_spread(int array[], int size, int& s_spread);
int largest_spread(int array[], int size, int& l_spread);
void positive_negative(int array[], int size, int positive[], int negative[]);
int index_of_smallest(const int array[], int start_index, int number_used);
void swap_values(int& v1, int& v2);
void main()
{
int size, biggest, smallest, small_spread, large_spread;
int original_array[20];
int positive_array[20];
int negative_array[20];
get_array(original_array, size);
cout << "\nOriginal";
display_array(original_array, size);
reverse_array(original_array, size);
cout << "\nReversed";
display_array(original_array, size);
find_max(original_array, size, biggest);
cout << "\nMaximum value = "<< biggest;
find_min(original_array, size, smallest);
cout << "\nMinimum value= " << smallest;
sort_array(original_array, size);
cout << "\nSorted";
display_array(original_array, size);
smallest_spread(original_array, size, small_spread);
cout << "\nSmallest spread = " << small_spread;
largest_spread(original_array, size, large_spread);
cout << "\nLargest spread = " << large_spread;
positive_negative(original_array, size, positive_array, negative_array);
cout << "\nPositive";
display_array(positive_array, size);
cout << "\nNegative";
display_array(negative_array, size);
}
int get_array(int array[], int& size)
{
cout << "Enter the array size: ";
cin >> size;
if(size > 20)
cout << "Invalid size entered.";
else
for(int i=0; i < size; i++)
{
cout << "Enter element #" << i+1 << ": ";
cin >> array[i];
}
return size;
}
void display_array(int array[], int size)
{
cout << " array: ";
for(int i=0; i < size; i++)
{
cout << array[i];
if (i < size-1)
cout<< ", ";
}
}
void reverse_array(int array[], int size)
{
int temp;
int j = size-1;
for(int i = 0; i < size/2; i++, j--)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
int find_max(int array[], int size, int& max)
{
max = array[0];
for(int i=1; i < size; i++)
{
if(array[i] > max)
max = array[i];
}
return max;
}
int find_min(int array[], int size, int& min)
{
min = array[0];
for(int i=1; i < size; i++)
{
if(array[i] < min)
min = array[i];
}
return min;
}
void sort_array(int array[], int size)
{
int index_of_next_smallest;
for(int i = 0; i < size-1; i++)
{
index_of_next_smallest= index_of_smallest(array, i, size);
swap_values(array[i], array[index_of_next_smallest]);
}
}
void swap_values(int& v1, int& v2)
{
int temp;
temp = v1;
v1 = v2;
v2 = temp;
}
int index_of_smallest(const int array[], int start_index, int number_used)
{
int min = array[start_index],
index_of_min = start_index;
for(int i = start_index + 1; i < number_used; i++)
if(array[i] < min)
{
min = array[i];
index_of_min = i;
}
return index_of_min;
}
int smallest_spread(int array[], int size, int& s_spread)
{
int spread;
s_spread = array[1] - array[0];
for(int i = 1; i < size-1 ; i++)
{
spread = array[i+1] - array[i];
if(spread < s_spread)
s_spread = spread;
}
return s_spread;
}
int largest_spread(int array[], int size, int& l_spread)
{
int spread;
l_spread = array[1] - array[0];
for(int i = 1; i < size-1 ; i++)
{
spread = array[i+1] - array[i];
if(spread > l_spread)
l_spread = spread;
}
return l_spread;
}
void positive_negative(int array[], int size, int positive[], int negative[])
{
int i,p = 0,n = 0 ;
for(i=0; i < size; i++)
{
positive[i]=0;
negative[i]=0;
}
for(i=0; i < size; i++)
{
if(array[i] >= 0)
{
positive[p] = array[i];
p++;
}
else
{
negative[n] = array[i];
n++;
}
}
}