#include <iostream>
#include <string>
#include <algorithm>
//#include "Movie.h"
#include <iomanip>
using namespace std;
#ifndef _Movie_
#define _Movie_
#include <iostream>
struct Movie
{
std:: string title;
int criticRating; // from 0 to 100
int audienceRating; // from 0 to 100
} ;
#endif /*defined _Movie_*/
void PrintMovies( Movie* , int ) ;
void SortMoviesByAudienceRating( Movie* , int ) ;
void InsertMovie( Movie* , int , const Movie& ) ;
int main( )
{
//auto automatically assumes what type
//constexpr = static const int
constexpr auto NumMovies = 10 ;
Movie* movie = new Movie[ NumMovies] ;
movie[ 0 ] = { "Kung Fu Panda 3" , 81 , 86 } ;
movie[ 1 ] = { "Hail, Caesar" , 81 , 46 } ;
movie[ 2 ] = { "Star Wars VII - The Force Awakens" , 92 , 90 } ;
movie[ 3 ] = { "The Revenant" , 82 , 85 } ;
movie[ 4 ] = { "The Choice" , 7 , 67 } ;
movie[ 5 ] = { "Pride and Prejudice and Zombies" , 45 , 59 } ;
movie[ 6 ] = { "The Finest Hours" , 59 , 72 } ;
movie[ 7 ] = { "Ride Along 2" , 13 , 55 } ;
movie[ 8 ] = { "The Boy" , 31 , 45 } ;
movie[ 9 ] = { "Dirty Grandpa" , 9 , 51 } ;
PrintMovies( movie, NumMovies) ;
SortMoviesByAudienceRating( movie, NumMovies) ;
cout << "---" << endl;
PrintMovies( movie, NumMovies) ;
cout << "---" << endl;
Movie newMovie = { "The Jungle Book" , 84 , 80 } ;
InsertMovie( movie, NumMovies, newMovie) ;
PrintMovies( movie, NumMovies) ;
return 0 ;
}
void PrintMovies( Movie* m, int n) {
for ( int i= 0 ; i< n; i++ )
cout << m[ i] .criticRating << "\t " << m[ i] .audienceRating << "\t " << m[ i] .title << endl;
}
void SortMoviesByAudienceRating( Movie* m, int n) {
sort( m, m+ n, [ ] ( Movie& a,Movie& b) { return a.audienceRating > b.audienceRating ; } ) ;
}
void InsertMovie( Movie* movies, int numMovies, const Movie& movie)
{
Movie temp1, temp2;
for ( int i = 0 ; i < numMovies; ++ i)
{
if ( movie.audienceRating >= movies[ i] .audienceRating )
{
for ( int j = numMovies - 1 ; j > i; -- j)
{
movies[ j] = movies[ j - 1 ] ;
}
temp1 = movies[ i] ;
movies[ i] = movie;
break ;
}
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgovLyNpbmNsdWRlICJNb3ZpZS5oIgojaW5jbHVkZSA8aW9tYW5pcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2lmbmRlZiBfTW92aWVfCiNkZWZpbmUgX01vdmllXwojaW5jbHVkZSA8aW9zdHJlYW0+CgoKc3RydWN0IE1vdmllCnsKICAgIHN0ZDo6c3RyaW5nIHRpdGxlOwogICAgaW50IGNyaXRpY1JhdGluZzsgLy8gZnJvbSAwIHRvIDEwMAogICAgaW50IGF1ZGllbmNlUmF0aW5nOyAvLyBmcm9tIDAgdG8gMTAwCn07CgojZW5kaWYgLypkZWZpbmVkIF9Nb3ZpZV8qLwoKdm9pZCBQcmludE1vdmllcyhNb3ZpZSosIGludCk7CnZvaWQgU29ydE1vdmllc0J5QXVkaWVuY2VSYXRpbmcoTW92aWUqLCBpbnQpOwp2b2lkIEluc2VydE1vdmllKE1vdmllKiwgaW50LCBjb25zdCBNb3ZpZSYpOwoKaW50IG1haW4oKQp7CiAgICAvL2F1dG8gYXV0b21hdGljYWxseSBhc3N1bWVzIHdoYXQgdHlwZQogICAgLy9jb25zdGV4cHIgPSBzdGF0aWMgY29uc3QgaW50CiAgICBjb25zdGV4cHIgYXV0byBOdW1Nb3ZpZXMgPSAxMDsKICAgIE1vdmllKiBtb3ZpZSA9IG5ldyBNb3ZpZVtOdW1Nb3ZpZXNdOwogICAgbW92aWVbMF0gPSB7ICAgIkt1bmcgRnUgUGFuZGEgMyIsIDgxLCA4Nn07CiAgICBtb3ZpZVsxXSA9IHsgICAiSGFpbCwgQ2Flc2FyIiwgODEsIDQ2fTsKICAgIG1vdmllWzJdID0geyAgICJTdGFyIFdhcnMgVklJIC0gVGhlIEZvcmNlIEF3YWtlbnMiLCA5MiwgOTB9OwogICAgbW92aWVbM10gPSB7ICAgIlRoZSBSZXZlbmFudCIsIDgyLCA4NX07CiAgICBtb3ZpZVs0XSA9IHsgICAiVGhlIENob2ljZSIsIDcsIDY3fTsKICAgIG1vdmllWzVdID0geyAgICJQcmlkZSBhbmQgUHJlanVkaWNlIGFuZCBab21iaWVzIiwgNDUsIDU5fTsKICAgIG1vdmllWzZdID0geyAgICJUaGUgRmluZXN0IEhvdXJzIiwgNTksIDcyfTsKICAgIG1vdmllWzddID0geyAgICJSaWRlIEFsb25nIDIiLCAxMywgNTV9OwogICAgbW92aWVbOF0gPSB7ICAgIlRoZSBCb3kiLCAzMSwgNDV9OwogICAgbW92aWVbOV0gPSB7ICAgIkRpcnR5IEdyYW5kcGEiLCA5LCA1MX07CgogICAgUHJpbnRNb3ZpZXMobW92aWUsIE51bU1vdmllcyk7CiAgICBTb3J0TW92aWVzQnlBdWRpZW5jZVJhdGluZyhtb3ZpZSwgTnVtTW92aWVzKTsKICAgIGNvdXQ8PCItLS0iPDxlbmRsOyAKICAgIFByaW50TW92aWVzKG1vdmllLCBOdW1Nb3ZpZXMpOwogICAgY291dDw8Ii0tLSI8PGVuZGw7IAoKICAgIE1vdmllIG5ld01vdmllID0geyAiVGhlIEp1bmdsZSBCb29rIiwgODQsIDgwIH07CgogICAgSW5zZXJ0TW92aWUobW92aWUsIE51bU1vdmllcywgbmV3TW92aWUpOwogICAgUHJpbnRNb3ZpZXMobW92aWUsIE51bU1vdmllcyk7CgogICAgcmV0dXJuIDA7Cn0KCnZvaWQgUHJpbnRNb3ZpZXMoTW92aWUqbSwgaW50IG4pIHsKICAgIGZvciAoaW50IGk9MDsgaTxuOyBpKyspIAogICAgICAgIGNvdXQ8PG1baV0uY3JpdGljUmF0aW5nIDw8ICJcdCIgPDxtW2ldLmF1ZGllbmNlUmF0aW5nPDwiXHQiPDwgbVtpXS50aXRsZTw8ZW5kbDsKfQp2b2lkIFNvcnRNb3ZpZXNCeUF1ZGllbmNlUmF0aW5nKE1vdmllKm0sIGludCBuKSB7Cglzb3J0KG0sIG0rbiwgW10oTW92aWUmYSxNb3ZpZSZiKXtyZXR1cm4gYS5hdWRpZW5jZVJhdGluZz5iLmF1ZGllbmNlUmF0aW5nO30pOwp9CgoKdm9pZCBJbnNlcnRNb3ZpZShNb3ZpZSogbW92aWVzLCBpbnQgbnVtTW92aWVzLCBjb25zdCBNb3ZpZSYgbW92aWUpCnsKICAgIE1vdmllIHRlbXAxLCB0ZW1wMjsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU1vdmllczsgKytpKQogICAgewogICAgICAgIGlmIChtb3ZpZS5hdWRpZW5jZVJhdGluZyA+PSBtb3ZpZXNbaV0uYXVkaWVuY2VSYXRpbmcpCiAgICAgICAgewogICAgICAgICAgICBmb3IgKGludCBqID0gbnVtTW92aWVzIC0gMTsgaiA+IGk7IC0taikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbW92aWVzW2pdID0gbW92aWVzW2ogLSAxXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGVtcDEgPSBtb3ZpZXNbaV07CiAgICAgICAgICAgIG1vdmllc1tpXSA9IG1vdmllOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9Cn0=