PDA

Visualizza la versione completa : [C] Blocco in ciclo while() annidato


kapopadu
09-03-2011, 20:30
Ciao Ragazzi,

ho un problema con un ciclo annidato while..non riesco a uscirne non ho errori in compilazione ma quando eseguo il programma non ottengo niente..il computer sembra quasi bloccato.



prova[0]=300;
int ii=0;

while(ii<2)
{
int jj=1;
while(jj<6)
{
if(jj*dxprova<(m[ii+1][0]-m[ii][0]))
{
prova[jj]=(m[ii+1][1]-m[ii][1])/(m[ii+1][0]-m[ii][0])*jj*dxprova+m[ii][1]-(m[ii+1][1]-m[ii][1])/(m[ii+1][0]-m[ii][0])*m[ii][0];
jj++;
}
if(jj*dxprova>(m[ii+1][0]-m[ii][0])) break;
}
ii++;
}

Che ne pensate??
grazie dell aiuto:)

jobv
10-03-2011, 08:45
Ciao,

cosė a prima vista ti farei una domanda:

nel ciclo while interno prevedi di modificare jj se "jj*dxprova<(m[ii+1][0]-m[ii][0])" e di uscire dal ciclo interno se "jj*dxprova>(m[ii+1][0]-m[ii][0])". Ma cosa succede se "jj*dxprova== (m[ii+1][0]-m[ii][0])" Si resta nel ciclo per sempre mi sa!

kapopadu
10-03-2011, 09:56
Buona osservazione..:)
ma essendo dxprova e m[i][j] double non credo che si verifichera mai la condizione == o sbaglio?

kapopadu
10-03-2011, 10:13
In pratica quello che dovrei fare e´ questo dati

dati 4 punti 0.0 0.005 0.01 0.015 a cui corrispondono 4 valori casuali (es. 300 1000 2000 2100) e´ fare un interpolazione sullo stesso dominio considerando 15 punti (0.0001 ...0.015) e interpolare dunque il valori che ho su 4 punti su 15 punti :(

jobv
10-03-2011, 10:22
Onestamente non ho capito cosa intendi con:

ma essendo dxprova e m[i][j] double non credo che si verifichera mai la condizione == o sbaglio?
...non credo che il semplice fatto che siano due double ti assicuri che la condizione di == non si verifichi mai...dipende dalle operazioni che ci fai...se non ho capito male cosa intendevi.

Ad ogni modo, sei riuscito a capire in che punto ti si ferma il codice?

Al volo ti direi di mettere una bella printf dopo gli if nel ciclo interno cosė da stampare ogni volta il valore di jj e vedere cosa succede!

kapopadu
10-03-2011, 10:32
Si avevi ragione == e´ stato sufficiente..Pero i risultati che ottengo non sono quelli che vorrei..forse sbaglio qualcosa nell´implementazione..hai qualche suggerimento su come farla l´interpolazione in maniera diversa?

jobv
10-03-2011, 10:41
Mi dispiace...ma io non ne ho la pių pallida idea :D

Loading