#include <iostream>
#include <algorithm>
typedef unsigned int uint32;
using namespace std;
/*GLOBAL*******neki niz od 0 - 100*/
uint32 data[] = { 27 , 18 , 0 ,3 , 5 , 4 , 6 , 7 , 8 , 14 };
/**********************************/
class NumberManager {
public:
NumberManager() {}
~NumberManager() {}
uint32* getMaxNum(uint32* begin , uint32 end);
uint32 getMaxValue() const {return *maxValue;}
void swapValues( uint32* first , uint32* second);
protected:
void update();
private:
/*daj flagove na bitne vrijednosti*/
uint32* maxValue;
};
void NumberManager::swapValues( uint32* first , uint32* second)
{
ptrdiff_t shift;
if(second == maxValue)
{
shift = first - second;
}
if(first == maxValue )
{
shift = second - first;
}
swap( *first , *second );
maxValue += shift;
}
void NumberManager::update()
{
/* operacija 1
/* operacija 2
/* operacija ...*/
}
bool maxTwoUint32(uint32 i, uint32 j)
{
/* static int counter;
cout<< "loop : " << counter++ << endl; */
return i<j;
}
uint32* NumberManager::getMaxNum(uint32* begin , uint32 end)
{
maxValue = max_element(begin , begin+end , maxTwoUint32);
return maxValue;
}
bool oddValue (uint32 val)
{
return ((val%2)==1);
}
int main()
{
NumberManager numManager;
/* frame 1 INITIALIZATION****************************************************/
uint32* result = numManager.getMaxNum(data , 10);
cout<< "FRAME 1\nOvdje po onome kako si predstavio problem imaš \n"
<< "unsorted array pa time i O(n) limitacije kod trazenja\n"
<< "najveceg broja" << endl;
cout<< "najveci broj : " << *result << "\n\n" << endl;
/***************************************************************/
/*frame 2 CHANGE******************************************************/
for(uint32 i=0 ; i<10 ; i++)
{
data[i] += 83;
}
/*ova operacija koja slijedi je nepotrebna dalje jer
ako je na indexu 9 (u ovom slučaju broj 19) bio najveći broj
, bit će i dalje nakon operacija mnozenja i zbrajanja tako
da u ovom frameu nije potreban checking*/
result = numManager.getMaxNum(data , 10);
cout<< "FRAME 2\nnajveci broj nakon sto je na svaki broj u data \n" <<
"dodan 83 je : " << *result << endl;
for(uint32 i=0 ; i<10 ; i++)
{
cout<< data[i] << endl;
}
/***************************************************************/
/* znaci prilagoditi main algoritme da uopce ne provjeravaju */
/* ishode koji su unaprijed logikom znani */
/***************************************************************/
/*frame 3 CHANGE_AGAIN******************************************************/
numManager.swapValues( data , data+2 );
cout<< "\n\nFRAME 3\n";
for(uint32 i=0 ; i<10 ; i++)
{
cout<< data[i] << endl;
}
cout<< "swap nultog i 2 index-a" << endl;
cout<< "najveci broj : " << numManager.getMaxValue()
<< " s direktnim pristupom" << endl;
/*******************************************************************/
/* imas odmah dohvat na max_element koji gore pratis u samoj klasi */
/* bez rolanja kroz sve elemente */
/*******************************************************************/
/**********************/
/* itd... */
/**********************/
return 0;
}