12/07/2019, 11:54
int confronta(const void *a, const void *b){
int val1, val2, mod1, mod2;
val1 = *((int*)a);
val2 = *((int*)b);
mod1 = (va1%2);
mod2 = (va2%2);
if ( (mod1== 0) && (mod2 == 0)) //sono entrambi multipli
return val1-val2;
else
if ( (mod1!= 0) && (mod2 != 0) ) //sono entrambi non multipli
return val1-val2;
else
if ( (mod1== 0) && (mod2!=0) ) //mod1 è multiplo di 2, mod2 non è multiplo di 2
return val1-val2;
else //mod2 è multiplo di 2, mod1 non è multiplo di 2
return val2-val1;
}
void qsort(void *a, n, sizeof(a[0]), confronta);
12/07/2019, 16:08
12/07/2019, 16:12
12/07/2019, 16:23
int
confronta( const void* a, const void* b )
{
int va = *(int*)a;
int vb = *(int*)b;
int moda = va % 2;
int modb = vb % 2;
// se sono entrambi nello stesso gruppo
if ( moda == modb )
{
return va - vb;
}
// altrimenti distingui per gruppo
// N.B.: moda < modb se a e' il multiplo di 2
return moda - modb;
}
12/07/2019, 16:33
12/07/2019, 16:46
int moda = !(va % 2);
int modb = !(vb % 2);
// altrimenti distingui per gruppo
// N.B.: moda < modb se a non e' il multiplo di 2
return modb - moda;
12/07/2019, 17:31
mod1 = abs(val1%2);
mod2 = abs(val2%2);
int confronta(const void *a, const void *b){
int val1, val2, mod1, mod2;
val1 = (*(int*)a);
val2 = (*(int*)b);
mod1 = abs(val1 % 2);
mod2 = abs(val2 % 2);
if(mod1 == mod2){
return val1 -val2;
}
else if(mod1 == 0){
return val1-val2;
}else
return mod1-mod2;
}
13/07/2019, 11:55
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.