Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kako riješiti ovo 4/6 + 2/6

[es] :: C programiranje :: kako riješiti ovo 4/6 + 2/6

[ Pregleda: 677 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dado_k
Varaždin

Član broj: 57122
Poruke: 301
*.cmu.carnet.hr.

ICQ: 326865106
Sajt: radim baš novi sajt u ph..


Profil

icon kako riješiti ovo 4/6 + 2/627.11.2005. u 17:33

dakle imam array float a[6] kako najbrže ustanoviti dali su 4 vrijednosti jednake i ove preostale dvije da su jednake i veće za korijen iz dva od ovih četiri evo npr ako imam ovakav primjer

a[0]=1;
a[1]=1,41; //korijen iz dva
a[2]=1;
a[3]=1,41;
a[4]=1;
a[5]=1;

to je dobro znači funkcija treba vratiti true vrijednost a ako imam nešto tipa

a[0]=1;
a[1]=1,41; //korijen iz dva
a[2]=2;
a[3]=1,41;
a[4]=1;
a[5]=1;

više nije dobro s time da ovaj 1 može biti bilo koji prirodan broj
znam da bi se to moglo sa if else no imao bi 15 kombinacija i nije baš nešto ima neki bolji način?
27.11.2005. u 17:33 

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 3403
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: kako riješiti ovo 4/6 + 2/627.11.2005. u 21:04
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...

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
27.11.2005. u 21:04 

NrmMyth
Split, Kaštela

Član broj: 63456
Poruke: 839
*.cmu.carnet.hr.



Profil

icon Re: kako riješiti ovo 4/6 + 2/627.11.2005. u 21:25
Citat:
X Files: Sigurno postoji prostije resenje, pogotovo ako se koriste liste koje vec
imaju modus SORTED i NO_DUPLICATES, ali evo ovako skolski...

std::Set
27.11.2005. u 21:25 

vjova
Jabuka

Član broj: 62349
Poruke: 2
*.vdial.verat.net.



Profil

icon Re: kako riješiti ovo 4/6 + 2/628.11.2005. u 22:51
On Sun, 27 Nov 2005 18:33:14 CET, dado_k wrote:


Citat:

dakle imam array float a[6] kako najbre ustanoviti dali su 4 vrijednosti jednake i ove preostale dvije da su jednake i vee za korijen iz dva od ovih etiri evo npr ako imam ovakav primjer


a[0]=1;

a[1]=1,41; //korijen iz dva

a[2]=1;

a[3]=1,41;

a[4]=1;

a[5]=1;


to je dobro znai funkcija treba vratiti true vrijednost a ako imam neto tipa


a[0]=1;

a[1]=1,41; //korijen iz dva

a[2]=2;

a[3]=1,41;

a[4]=1;

a[5]=1;


vie nije dobro s time da ovaj 1 moe biti bilo koji prirodan broj

znam da bi se to moglo sa if else no imao bi 15 kombinacija i nije ba neto ima neki bolji nain?

----

radim ba novi sajt u php-u...



Uvek ima bolji nacin uz pomoc for petlje


int funkcija(float *a){

float temp,temp2;

int j,i,isto=0,isto2=0;

temp=a[0];

for(i=0;i&lt;6;i++) if(temp=a) isto++ else temp2=a;

for(j=0;j&lt;6;j++) if(temp2=a[j]) isto2++;

if(temp2==1.41*temp1) if((isto==4) &amp;&amp; (isto2==2)) return 1;

if(temp1==1.41*temp2) if((isto==2) &amp;&amp; (istp2==44)) return 1;

return 0;

}



--

kOMPLEx@verat.net
28.11.2005. u 22:51 

[es] :: C programiranje :: kako riješiti ovo 4/6 + 2/6

[ Pregleda: 677 | Odgovora: 3 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.