Ho eseguito il prog ma niente, il compilatore è della Borland, Borland C++ 5.5.1 cmq ho fatto uno screenshot del codice da implementare ora te la posto.
Ho eseguito il prog ma niente, il compilatore è della Borland, Borland C++ 5.5.1 cmq ho fatto uno screenshot del codice da implementare ora te la posto.
ho tradotto il tuo prog da quello shot :Originariamente inviato da andypower
Ho eseguito il prog ma niente, il compilatore è della Borland, Borland C++ 5.5.1 cmq ho fatto uno screenshot del codice da implementare ora te la posto.
sostituisci questo al corpo della funz span();codice:for(i=0;i<N-1;i++){ k=0; done=false; do{ if ( P[i-k] <= P[i] ) k++; else done=true }while(k>1 || done); S[i]=k; }
![]()
Vediamo..sogni che diventano professione...passioni che diventano vita...Free as in Freedom...
ennesima svista da parte mia, cmq l'unica differenze tra il cod ke mi hai gentilmente tradotto e il mio è che il ciclo deve andare avanti fino ad N-1 poi x il resto era uguale... se provo ad eseguire il programma come al solito va in loop e nn fa niente, devo interromperlo con Ctrl+C...
bè nn solo quello c'era anche un <= che avevi messo soltanto <.Originariamente inviato da andypower
ennesima svista da parte mia, cmq l'unica differenze tra il cod ke mi hai gentilmente tradotto e il mio è che il ciclo deve andare avanti fino ad N-1 poi x il resto era uguale... se provo ad eseguire il programma come al solito va in loop e nn fa niente, devo interromperlo con Ctrl+C...
Cmq se anche la traduzione,presa se non erro da una slide di una università,dell'originale si blocca forse perchè devi controllare di aver scritto/incollato bene la parte che ti ho tradotto...
...
...oppure è propio l'algortimo iniziale che è bacato![]()
...oppure cambia compilatore(scarica ed installa DevCPP che è gratutito è sotto licenza GPL)
...
ciuaz vado![]()
Vediamo..sogni che diventano professione...passioni che diventano vita...Free as in Freedom...
Bhè grazie tante cmq il cod ke compilo ed eseguo e' questo:
Chissà dov'è il problema...codice:#include <iostream> using namespace std; const int N = 10; int* Span (int P[]); int main () { int P[N] = {1,4,8,3,5,3,9,2,5,34}, *s; s = new int[N]; s = Span (P); for (int i = 0; i < N; i++) { cout << s[i] << " " << endl; } return 0; } int* Span (int P[N]) { int k, i, *S; S = new int[N]; bool done; for (i = 0; i < N-1; i++) { k = 0; done = false; do { if (P[i-k] <= P[i]) { k = k + 1; } else { done = true; } } while (k > i || done); S[i] = k; } return S; }
sicuramente sulla definizione della funzione....Originariamente inviato da andypower
Bhè grazie tante cmq il cod ke compilo ed eseguo e' questo:
Chissà dov'è il problema...
compila/esegui questo:
codice:#include <iostream> using namespace std; const int N = 10; int* Span (int P[]); int main () { int P[N] = {1,4,8,3,5,3,9,2,5,34}, *s; s = new int[N]; s = Span (P); for (int i = 0; i < N; i++) { cout << s[i] << " " << endl; } return 0; } int* Span (int P[]) { //tu qua avevi messo int P[N] int k, i, *S; S = new int[N]; bool done; for (i = 0; i < N-1; i++) { k = 0; done = false; do { if (P[i-k] <= P[i]) { k = k + 1; } else { done = true; } } while (k > i || done); S[i] = k; } return S; }
Vediamo..sogni che diventano professione...passioni che diventano vita...Free as in Freedom...
Magari fosse stato quello il problema... ancora nn ci siamo, resta il warning e il programma và in loop e nn si ferma...![]()
il prob del loop dipende quasi sicuramente dal do-while(l'ex repeat untilOriginariamente inviato da andypower
Magari fosse stato quello il problema... ancora nn ci siamo, resta il warning e il programma và in loop e nn si ferma...![]()
) che si trova dentro al for...è l'algortimo che ha qualche bug.
Cmq proviamo cosi':
codice:... do{ if (P[i-k] <= P[i]) k++; else done = true; }while ((k > i) || (done==true)); ...![]()
Vediamo..sogni che diventano professione...passioni che diventano vita...Free as in Freedom...
Finalmente!!!
Nemmeno con la tua ultima modifica funzionava allora ho pensato di analizzare il codice in cerca di eventuali bug
e mi son accorto ke per farlo funzionare correttamente bisognava fare delle modifiche, il repeat until andava negato per farlo funzionare nel do while
e il ciclo deve andare avanti fino ad N e nn ad N-1 cmq questo è il codice:
Cmq grazie per la pazienza :metallicaCodice PHP:#include <iostream>
using namespace std;
const int N = 7;
int* Span (int P[]);
int main () {
int P[N] = {1,4,8,45,3,5,34}, *s;
s = new int[N];
s = Span (P);
for (int i = 0; i < N; i++) {
cout << s[i] << " " << endl;
}
return 0;
}
int* Span (int P[]) {
int k, i, *S;
S = new int[N];
bool done;
for (i = 0; i < N; i++) { // il cod va avanti fino ad N
k = 0;
done = false;
do {
if (P[i-k] <= P[i]) {
k = k + 1;
} else {
done = true;
}
} while (k <= i && done == false); //modificato quì
S[i] = k;
}
return S;
}
Originariamente inviato da andypower
Finalmente!!!
Cmq grazie per la pazienza :metallicadi niente.
Cmq nello pseudocodice che avevi da tradurre era indicata N-1 e nella condizione while (vabbè repeat until in pascal) era indicato solo il nome della variabile booleana,quindi sottointesa come TRUE...![]()
![]()
ps sempre nella condizione del while ho visto che hai messo AND(&&) mentre in origine era OR (||) e k <= i contro k > i ...![]()
Vediamo..sogni che diventano professione...passioni che diventano vita...Free as in Freedom...