Sigurno postoji prostije resenje, pogotovo ako se koriste liste koje vec
imaju modus SORTED i NO_DUPLICATES, ali evo ovako skolski...
NETESTIRANO:
Code:
bool Result( double *niz )
{
// buduci niz bez duplikata
double x[6] ={0};
// brojac pojavljivanja
int c[6] ={0};
// koliko razlicitih brojeva se javlja
int count = 0;
// napravi novi niz x[], koji ce imati samo po jedan element od svake vrste
// tj, bez duplikata
for ( int i=0; i<6; i++ )
{
bool exists = false;
for ( int j=0; j<count; j++ )
if ( niz[i] == x[j] )
exists = true;
if ( !exists )
x[ count++ ] = niz[i];
}
// ako je taj broj razlicit od DVA, to znaci da ne valja
if ( count != 2 )
return ( false );
// u niz c[] na istim indexnim pozicijiama kao x[], saberi koliko se puta javlja taj broj
for ( int i=0; i<6; i++ )
{
if ( x[0] == niz[i] )
++c[0];
if ( x[1] == niz[i] )
++c[1];
}
// ako se ne javlja u odnosu 4:2 ili 2:4, nije dobro...
if ( ! ( ( ( c[0] == 4 ) && ( c[1] == 2 ) ) ||
( ( c[0] == 2 ) && ( c[1] == 4 ) ) ) )
return ( false );
//veci broj stavi u max, a manji u min
double max;
double min;
if ( x[0] > x[1] )
{
max = x[0];
min = x[1];
}
else
{
max = x[1];
min = x[0];
}
// ONAJ ZADNJI DEO KOJI POREDI KOREN IZ DVA NISAM RAZUMEO,
// PA GA SAM DORADI...
// max ti je veci od ta dva broja
// min ti je manji od ta dva broja
return ( true );
}
ili kada se koristi:
Code:
double a[6];
a[0]=2;
a[1]=1.41; //korijen iz dva
a[2]=2;
a[3]=1.41;
a[4]=2;
a[5]=2;
if ( Result( a ) == false )
// ...
else
// ...
PAZI, NIJE TESTIRANO, MOŽDA IMA BUG-OVA...