Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Sort Routine Fails to Sort Final Sequence in Array

Posted on 2011-03-15
Medium Priority
354 Views
So far, so good... HOWEVER, I want this code to print the array in descending order, based on the second column... it does that, but leaves the last (highest) pair of numbers at the bottom of the list!  What can be done to fix this?
``````#include <iostream>
#include <stdlib.h>
#include <vector>
#include <algorithm>

using namespace std;

const int FINISH = 2;
const int START = 5;

void getData(int arr[][FINISH]);
void displayData(int arr[][FINISH]);
bool insertionSort(const vector<int>& inner1, const vector<int>& inner2);

int i = 0;
int j = 0;

int main()
{
int timeArray[START][FINISH];

getData(timeArray);
displayData(timeArray);

vector<vector<int> > vect;

for (int i = 0; i < START - 1; ++i)
{
vector<int> inner(timeArray[i], timeArray[i] + 2);
vect.push_back(inner);
}

sort(vect.begin(), vect.end(), insertionSort);

for (int i = 0; i < START - 1; ++i)
{
timeArray[i][0] = vect[i][0];
timeArray[i][1] = vect[i][1];
}

displayData(timeArray);

cout << endl << endl << endl;

system("PAUSE");
return 0;
}

// used to prompt user to fill array with values
void getData(int arr[][FINISH])
{
cout << "Enter start/finish times." << endl
<< "One at a time when prompted: " << endl;

cout << endl;

for(int i = 0; i <= START - 1; i++)
{
cout << "Enter start time #" << i + 1 << ": ";
cin >> arr[i][j];

for(int j = 0; j <= 0; j++)
{
cout << "Enter finish time #" << i + 1 << ": ";
cin >> arr[i][j + 1];
}

cout << endl;
}
}// end getData()

// used to display array contents
void displayData(int arr[][FINISH])
{
cout << endl << endl;
for (int i = 0; i < START; i++)
{
for (int j = 0; j < FINISH; j++)
cout << arr[i][j] << " ";
cout << endl;
}
}// end displayData()

bool insertionSort(const vector<int>& inner1, const vector<int>& inner2)
{
return inner1[1] >= inner2[1];
}
``````
I'm SO close...
0
Question by:Member_2_4213139
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2

LVL 53

Expert Comment

ID: 35141007
I notice that some of your loops go from 0 to (START - 1), and others go from 0 to (START - 2).
0

LVL 37

Accepted Solution

TommySzalapski earned 2000 total points
ID: 35141035
I'm not too sure how you have this working, but shouldn't
for (int i = 0; i < START - 1; ++i)
be this?
for (int i = 0; i < START; ++i)

You are not copying the last item which is why it's still at the end.
You should notice it shows up twice.
0

Author Closing Comment

ID: 35141204
I didn't notice ANY "START - 2" ... but changing the START -1 to START did it!  THANK YOU!
0

LVL 53

Expert Comment

ID: 35141230
>> I didn't notice ANY "START - 2"

If you have a loop condition that says :

i < START - 1

it means it'll go up to (START - 2) and no further.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
Today, the web development industry is booming, and many people consider it to be their vocation. The question you may be asking yourself is – how do I become a web developer?
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.
###### Suggested Courses
Course of the Month8 days, left to enroll