Newsgroup: it.comp.java
Titolo: riscrivere cicli

ciao a tutti!
premetto che sono alle mie prime armi con java...
ho un problema da risovere, come posso riscrivere questo ciclo
int s=0,
p=1;
for(int i=a.length-1; i>0; i--) {
	s += a[i];
	if(a[i]<a[i-1]) break;
	p *= a[i];
}
utilizzando solo istruzioni while-do e if-else?
Grazie mille a chi mi risponderà!
ciao

 ha scritto nel messaggio
news:1145984046.3...@j33g2000cwa.googlegroups.com...


 Spero di non aver sbagliato.
la sintassi del do-while non è esatta.
perché sia proprio identico all'originale dovrebbe fare:
  int s = 0, p=1, i = a.length-1;
  if(i>0){
    do
    {
      s+=a[i];
      if(a[i]<a[i-1]) break;
      p*=a[i];
      i--;
    }
    while (i >0);}
-- 
Manny Calavera
Mail To: anforagimailpuntocom²

Manny Calavera ha scritto:

ma che stai dicendo?

Più tardi voglio ragionarci con calma perché così di sfuggita non colgo la
differenza tra le due soluzioni.
Ciao.
"Manny Calavera" <leggi...@fir.ma.invalid> ha scritto nel messaggio
news:op.s8nyr...@bates.mshome.net...


> all'originale dovrebbe fare:
FDSTS> ma che stai dicendo?
Dice che se non ci mette il test prima del ciclo do-while questo viene
eseguito almeno una volta anche se i <= 0.
Solo che lo dice usando le parole sbagliate. Il pezzo di codice Luca
correggeva non era sintatticamente errato, il problema è che non si
teneva conto correttamente della diversa semantica dei cicli do-while
e for.
-- 
 /\           ___
/___/\_|_|\_|__|___Gian Uberto Lauri_____
  //--\| | \|  |   Integralista GNUslamico
\/                 e coltivatore diretto di Software

 ha scritto nel messaggio
news:87vesu9...@paperoga.gianoziaorientale.it...


 Solo una precisazione sulla mia sintassi, il "do" non ci va.
Quindi forse non siamo "noi" che abbiamo sbagliato la semantica, ma tu
che hai sbagliato la sintassi. Le nostre sfere di cristallo purtroppo
non sono aggiornate e ci hanno portato ad interpretare l'introduzione
del do spurio come un tentativo di scrivere un ciclo do-while (come
chiesto da OP, tra l'altro).
Tuttavia in questo caso il tuo esempio sarebbe stato anche
semanticamente errato (nel senso di non equivalente al for).
Correggendo invece il tuo codice eliminando il do (ma OP aveva parlato
di un ciclo do-while), allora si, è corretto.
Comunque in caso di sintassi ambigua il mio parser fa un po' quello che
vuole e vede di interpretare a senso, quindi trovo le obiezioni che ti
sono state poste assolutamente appropriate.
Ora è tutto chiaro e spiegato. Solo non puntare il dito dicendo che gli
altri si sbagliano.
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.

 altri si sbagliano.
Non volevo puntare il dito su nessuno, probabilmente molti frequentatori di
questo newsgroup sono più competenti di me e infatti sono più le domande che
faccio rispetto alle risposte che fornisco ;-)
Pace e serenità gente :-)
Luca.

 originale era stato chiesto un "WHILE-DO" non il "DO-WHILE".
Original Poster. Esattamente quello. 


 Solo una precisazione sulla mia sintassi, il "do" non ci va.
Appunto.
while -> do è sbagliata come sintassi, in più nelle specifiche c'era l'uso  
del do, quindi l'unica maniera per farlo è la mia soluzione.


Vabbè, ormai abbiamo perso di vista il problema iniziale e credo che questo
post sia sopravvissuto a se stesso.
Comunque, vediamo di ricapitolare per non fare confusione.
1) Nel post originale si chiedeva il costrutto WHILE-DO.
2) In Java non esiste esattamente quel costrutto, esiste o il WHILE() {} o
il DO {} WHILE ().
3) Io ho usato il primo (dopo la correzione) e tu il secondo. Entrambi non
abbiamo usato il costrutto che veniva chiesto (perché appunto non esiste in
Java).
Quindi credo che entrambe le soluzioni vadano bene, concordi? Perché la tua
è giusta e la mia (dopo la correzione) è sbagliata?
Poi se tu mi dici che è giusta solo la tua soluzione perché in realtà nel
post originale con la dicitura WHILE-DO si intendeva il tuo DO{} WHILE () io
potrei obbiettare che in realtà con la dicitura WHILE-DO si potrebbe
intendere il costrutto WHILE() {}. Tu potresti avvallare la tua affermazioni
mostrando che WHILE-DO sono le stesse parole di DO-WHILE, io potrei dire che
il "senso" di WHILE-DO è FINCHE'() ALLORA FAI{} che è esattamente quello che
significa il costrutto WHILE(){}.
Chiaro no?
Ciao a tutti.
Luca.
"Manny Calavera" <leggi...@fir.ma.invalid> ha scritto nel messaggio
news:op.s8w65...@bates.mshome.net...


 writes:
Scusate il ritardo nella risposta.
L> Credo che invece vi sbagliate voi.  Per sicurezza sono andato a
L> rileggermi il manuale e dice: "IL CICLO WHILE NON VIENE MAI
L> ESEGUITO SE LA CONDIZIONE E' INIZIALMENTE FALSA". Questo se il
L> ciclo è impostato nel seguente modo "while (condizione)
L> {istruzioni}"
Sei ancora al punto di aver bisogno di controllare :) :) :) :) ?
Nessuno cade maestro dal cielo, e la confusione capita. Tutto chiaro.
