PDA

Visualizza la versione completa : [C] Ciclo while() e sue condizioni


vale_stella84
28-01-2007, 14:55
salve sto tentando di caprici di più sul ciclo while e sulle sue condizioni ma con scarsi risultati;il mio programma è questo:

{
int i,x;

for(i=3;i<=5;i=i+2){
do{
x=1+2;
printf("%d\n",x);
}
while(!(i<=5) || !(x==3)/*questa condizione non funziona*/);
}

}

vorrei che il ciclo si chiudesse quando i e minore uguale a 5 e quindi mi da i primi 2 nuermi e quando mi trova il primo 3,quindi si ferma appena trova il primo,ma non ci riesco!!!!quale condizione devo mettere nel while? :master: :bhò:
grazie a tutti per l'aiuto :smack: :zizi:

oregon
28-01-2007, 15:06
Spiegati meglio ...

Vuoi che il ciclo venga ripetuto o che si esca dal ciclo?

E quali sono gli intervalli?

vale_stella84
28-01-2007, 15:12
allora il ciclo da in output 3 finchè non raggiunge il massimo dell'intervallo,quindi il programma da 2 volte l'operazione x:
3
3
però io vorrei che al primo 3 si blocca il ciclo...

oregon
28-01-2007, 15:16
Visualizza 2 volte il 3 perche' il ciclo for viene eseguito 2 volte ...

vale_stella84
28-01-2007, 15:18
e lo so ma nelle condizioni possi impostare l'uscita dal ciclo non appena trovo un numero che scelgo,tipo ora voglio che esce non appena mi trova il 3 ma mettiamo caso fosse un operazione che mi da 1,2,3,9,0,11,12;posso impostare che appena mi trova lo 0 esce dal ciclo?

oregon
28-01-2007, 15:21
Senti ... non ti riesco a capire ... o scrivi delle frasi di senso compiuto, con virgole e punti al posto giusto o non so cosa dirti ...

Dato che ci sono DUE cicli (il for e il while) vorrei capire da QUALE ciclo intendi uscire ...
E cosa intendi per "uscire" perche' se esci dal ciclo while entri comunque nel ciclo for ...
Se vuoi uscire ANCHE dal ciclo for DOPO essere uscito dal while, me lo devi far capire ...

vale_stella84
28-01-2007, 15:33
scusami allora cercherò di spiegarmi il meglio possibile:

forse il mio programma è sbagliato io vorrei fare questo:
dato un intervallo di numeri dispari 3,5,7,9 in quest'intervallo vorrei dividere questi numeri per un altro numero impostato tipo 27.
qundi l'operazione dovrebbe essere 27/3 27/5 etc...
non appena trovo il risutlato che voglio il cilco si ferma,tipo voglio che il ciclo si fermi appena trova il risultato 5.4 cioè la divisione di 27/5 se non trova il risultato si deve fermare all'ultima divisione cioè 27/9.
per questo avevo pensato ad un for che mi da i numeri dispari da 3 a 9 e nel for un ciclo while che mi ripete l'operazione cioè
27/3
27/5
27/7
27/9
finche non trova il numero che voglio o se non lo trova si deve fermare al calcolo dell'ultima divisione,però non ci riesco.scusa il linguaggio non sono un'esperta,spero di essermi fatta capire

oregon
28-01-2007, 15:44
Ma forse ti serve solamente un ciclo for ... se scrivi un ciclo for che va da 3 a quanto vuoi, a passo 2, e fai la divisione, hai risolto ... il ciclo while non serve.

Intendo

int i, a, r;

a=27;

for(i=3; i<=9; i=i+2)
{
r = a / i;
}

Quello che non ho capito e' "il ciclo si fermi appena trova il risultato" ... "se non trova il risultato ..." ... in una divisione c'e' sempre un risultato ... che vuol dire "non trova il risultato" ?

vale_stella84
28-01-2007, 15:51
perchè io ora ti sto facendo degli esmpi per capirci meglio ma nella mia operazione del programma vero potrebbe venirmi uno zero,quello zero indica che il numero non è primo,ora se esce questo zero faccio una printf("il numero non è primo") altrimenti un'altra con("il numero è primo")capisci
ti ringrazio molto dell'aiuto

oregon
28-01-2007, 15:56
Allora tu stai cercando di fare un ciclo per controllare se il numero e' primo o no ... potevi anche dirlo prima ...

Comunque, ti confermo che il while non c'entra nulla ... semmai devi inserire una

if

dopo la divisione per capire se questa ha un resto o no. E da questo capisci se il numero e' divisibile ...

Loading