Salve, sono sempre io con i miei quesiti da niubbo ..
Allora sono sicuro che anche questa è una banalità. Il programma non visualizza l'ultima tabella e il codice mi sembra giusto .. vi posto
L'ultima tabella non si legge e non perchè ...codice:int main(int argc, char *argv[]) { roba varia ... char decision[80]; printf("\nPremi il tasto ENTER attivare il processo ", decision); if(gets(decision)) { roba varia ... for (j = 0; j < n; ++j) { vet[y]=arrayOne[y]; //PERTURBAZIONE CASUALE//////// set = (rand()%100); double r = ((double)set/100)*5; score[j]=((double)p[j]/(double)w[j])+(double)r; printf("OBJ: %d, Profitto: %d, Peso: %d, Item: %d, Score: %.3f\n", arrayOne[j], p[j], w[j], q[j], score[j]); } printf("\n"); printf("Esecuzione algoritmo con ordinamento O(nlogn)\n\n"); for (j = 0; j < n; ++j) { ////Ordinamento decrescente ------------------------------------------ for (i=0; i<n; i++) { vet[i]=arrayOne[i]; } int salto,tempItem; double tempScore; for (salto = n/2; salto > 0; salto /=2) for (i = salto; i < n; i++) for (j = i-salto; j >= 0; j-=salto) { if (score[j] >= score[j+salto]) break; tempScore = score[j]; score[j]=score[j+salto]; score[j+salto]=tempScore; tempItem = vet[j]; vet[j]=vet[j+salto]; vet[j+salto]=tempItem; arrayOne[i]=vet[i]; } for (i=0; i<n; i++) { arrayOne[i]=vet[i]; } for (i = 0; i < n; ++i) { if ((w[i] <= C )) { x[i]=Min((C/w[i]),q[i]); valore = valore + (p[i]*x[i]); C = C - (w[i]*x[i]); precedente = arrayOne[i]; contatore = contatore+1; printf("OBJ %d; Profitto cumulato: %d; Dimensione: %d; Item: %d; CapacitaR %d.\n", precedente, valore, w[i], q[i], C); } } } t1=clock(); printf("\nPROCESSO CONCLUSO.\n"); printf("------------------------------\n"); printf("OBJ Processati: %d\n", contatore); printf("Profitto: %d\n", valore); printf("CapacitaR finale: %d\n", C); printf("Tempo Totale: %.3f\n",((double)(t1 - t0)) / ((double)CLOCKS_PER_SEC)); printf("------------------------------\n"); printf("\n"); contatore1 = contatore; valore1 = valore; C1 = C; tempo1 = ((double)(t1 - t0)) / ((double)CLOCKS_PER_SEC); } system("pause"); return 0; }

Rispondi quotando

