Ciao ixamit,
ixamit ha scritto:
while ((p+=(s=-s)/(d+=2)),--x);
Complimenti!
Riscrivo il codice completo (perché i valori iniziali devono essere diversi)
printf("Inserisci il numero di approssimazioni:");
int x;
scanf(" %d", &x);
double p = 0;
double d = -1;
int s = 4;
while (p+=(s=-s)/(d+=2),x--);
printf("Pi greco approssimato a %d cifre è %f", x, p);
Ti ho tolto due parentesi ma rimane punto tuo
Per quanto riguarda la faccenda del ++++ ho provato con questi compilatori:
VisualStudio 2010 (Windows)
Eclipse 1.2.0 (Linux)
Qnx Momentics 4.0.1 (Qnx)
Xcode 4.3.2 (Mac)
E su questi funziona, ovviamente questo non vuol dir nulla (non vince la maggioranza ma chi ha ragione )
In linea di principio a me sembra corretto, in quanto l' operatore ++ quando è prefisso restituisce un l-value e quindi si puo applicare ancora il ++, mentre quando è postfisso restituisce un r-value (infatti n++++ è sicuramente sbagliato). Però non ci giurerei e volevo sentire il vostro parere.
Provvisoriamente lo considererei valido per cui possiamo scrivere:
while(p+=(s=-s)/++++d,x--);
Si toglie ancora un carattere. Questo però non vale, è ancora punto di ixamit.
Per fare punto io devo proporre una cosa diversa:
for(;x--;p+=(s=-s)/++++d);
Che toglie un altro carattere.