#include <iostream>
#include <iomanip>
using std:: cout ;
using std:: endl ;
using std:: setw ;
void readData ( int ** , int , int ) ;
void printData( int ** , int , int ) ;
void sortbyPartID( int ** , int , int ) ;
int main( )
{
int columns = 2 ;
int rows = 5 ;
cout << endl;
int ** PriceSheet = new int * [ rows] ;
for ( int row = 0 ; row < rows; row++ )
PriceSheet [ row] = new int [ columns] ;
readData ( PriceSheet, rows, columns) ;
cout << endl;
printData( PriceSheet, rows, columns) ;
sortbyPartID( PriceSheet, rows, columns) ;
printData( PriceSheet, rows, columns) ;
for ( int row = 0 ; row < rows; row++ )
delete [ ] PriceSheet[ row] ;
delete [ ] PriceSheet;
}
void readData ( int ** p, int rowSize, int colSize)
{
for ( int row = 0 ; row < rowSize; row++ )
{
for ( int col = 0 ; col < colSize; col++ )
p[ row] [ col] = ( row % 2 ? 2 * row + 5 : row) + col;
}
}
void printData ( int ** p, int rowSize, int colSize)
{
cout << "\n \n These are the Products IDs and Prices as entered in the system:\n " ;
for ( int row = 0 ; row < rowSize; row++ )
{
for ( int col = 0 ; col < colSize; col++ )
cout << setw( 5 ) << p[ row] [ col] ;
cout << endl;
}
}
void sortbyPartID ( int ** p, int rowSize, int colSize)
{
int swap = - 1 ;
int end = rowSize;
for ( int counter = rowSize - 1 ; counter >= 0 ; -- counter)
{
for ( int index = 0 ; index < end - 1 ; ++ index)
{
if ( p[ index] [ 0 ] > p[ index + 1 ] [ 0 ] )
{
// std::swap(p[index], p[index + 1]);
int * swap = p[ index + 1 ] ;
p[ index + 1 ] = p[ index] ;
p[ index] = swap;
}
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIHN0ZDo6Y291dDsKdXNpbmcgc3RkOjplbmRsOwp1c2luZyBzdGQ6OnNldHc7Cgp2b2lkIHJlYWREYXRhIChpbnQqKiwgaW50LCBpbnQpOwp2b2lkIHByaW50RGF0YShpbnQqKiwgaW50LCBpbnQpOwp2b2lkIHNvcnRieVBhcnRJRChpbnQqKiwgaW50LCBpbnQpOwoKaW50IG1haW4oKQp7CiAgICBpbnQgY29sdW1ucyA9IDI7CiAgICBpbnQgcm93cyA9IDU7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgaW50ICoqUHJpY2VTaGVldCA9IG5ldyBpbnQqIFtyb3dzXTsKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd3M7IHJvdysrKQogICAgICAgIFByaWNlU2hlZXQgW3Jvd10gPSBuZXcgaW50W2NvbHVtbnNdOwoKICAgIHJlYWREYXRhIChQcmljZVNoZWV0LCByb3dzLCBjb2x1bW5zKTsKICAgIGNvdXQgPDwgZW5kbDsKCiAgICBwcmludERhdGEoUHJpY2VTaGVldCwgcm93cywgY29sdW1ucyk7CgogICAgc29ydGJ5UGFydElEKFByaWNlU2hlZXQsIHJvd3MsIGNvbHVtbnMpOwogICAgCiAgICBwcmludERhdGEoUHJpY2VTaGVldCwgcm93cywgY29sdW1ucyk7CiAgICAKICAgIAogICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgcm93czsgcm93KyspCiAgICAgICAgZGVsZXRlW10gUHJpY2VTaGVldFtyb3ddOwogICAgZGVsZXRlW10gUHJpY2VTaGVldDsKfQoKdm9pZCByZWFkRGF0YSAoaW50ICoqcCwgaW50IHJvd1NpemUsIGludCBjb2xTaXplKQp7CiAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCByb3dTaXplOyByb3crKykKICAgIHsKICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBjb2xTaXplOyBjb2wrKykKICAgICAgICAgICAgcFtyb3ddW2NvbF0gPSAocm93ICUgMiA/IDIgKiByb3cgKyA1IDogcm93KSArIGNvbDsKICAgIH0KfQoKdm9pZCBwcmludERhdGEgKGludCAqKnAsIGludCByb3dTaXplLCBpbnQgY29sU2l6ZSkKewogICAgY291dCA8PCAiXG5cblRoZXNlIGFyZSB0aGUgUHJvZHVjdHMgSURzIGFuZCBQcmljZXMgYXMgZW50ZXJlZCBpbiB0aGUgc3lzdGVtOlxuIjsKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd1NpemU7IHJvdysrKQogICAgewogICAgICAgIGZvciAoaW50IGNvbCA9IDA7IGNvbCA8IGNvbFNpemU7IGNvbCsrKQogICAgICAgICAgICBjb3V0IDw8IHNldHcoNSkgPDwgcFtyb3ddW2NvbF07CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQp9Cgp2b2lkIHNvcnRieVBhcnRJRCAoaW50ICoqcCwgaW50IHJvd1NpemUsIGludCBjb2xTaXplKQp7CiAgICBpbnQgc3dhcCA9IC0xOwogICAgaW50IGVuZCA9IHJvd1NpemU7CiAgICBmb3IgKGludCBjb3VudGVyID0gcm93U2l6ZSAtIDE7IGNvdW50ZXIgPj0gMDsgLS1jb3VudGVyKQogICAgewogICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBlbmQgLSAxIDsgKytpbmRleCkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChwW2luZGV4XVswXSA+IHBbaW5kZXggKyAxXVswXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gc3RkOjpzd2FwKHBbaW5kZXhdLCBwW2luZGV4ICsgMV0pOwogICAgICAgICAgICAgICAgaW50KiBzd2FwID0gcFtpbmRleCArIDFdOwogICAgICAgICAgICAgICAgcFtpbmRleCArIDFdID0gcFtpbmRleF07CiAgICAgICAgICAgICAgICBwW2luZGV4XSA9IHN3YXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0=