Salve, non vi nascondo che sono nuovo del mondo c++ e anche del forum.
Ho un problema. Devo ordinare i valori di un array sulla base di un particolare processo. Tuttavia la variabile rispetto alla quale ordino "score" non accetta valori del tipo ((P*Q)/W) e non capisco perchè. Vi posto il codice. I valori delle matrici sono caricati da un file esterno.
Grazie
codice://Apro il file ifstream in("C:/.../bkpBwu200-1.txt"); int j = 0; int *w,*p,*q, *arrayOne, *ordinamento; int i,n,C; //Size and capacity reading in >> n; in >> C; printf("TABELLA DATI\n\n"); printf("\Cardinalita: %d.\n",n); printf("\Capacita massima: %d.\n",C); p=new int[n]; w=new int[n]; q=new int[n]; arrayOne=new int[n]; ordinamento=new int(n); for(i=0;i<n;i++) { arrayOne[i] = i; in >> p[i]; in >> w[i]; in >> q[i]; //arrayOne[i] =(((p[i])*(q[i]))/w[i]); printf("\OBJ: %d, Profitto: %d, Peso: %d, Item: %d.\n", arrayOne[i], p[i], w[i], q[i]); } printf("\n"); //Ciclo che recupera i dati del file riga per riga e li mette in strings while ( in ) { in.getline(strings[j++], MAX_LINE_LEN); } //ORDINAMENTO NON CRESCENTE double *score; int salto,tempItem; double tempScore; score[j]=((p[j]*q[j])/w[j]); <======== NON VA PROPRIO QUI Se tolgo la divisione va 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 = arrayOne[j]; arrayOne[j]=arrayOne[j+salto]; arrayOne[j+salto]=tempItem; } printf("Elenco Ordinamento O(nlogn)\n"); printf("\n"); for (int i = 0; i < n; i++) {cout << arrayOne[i] << " ";}//end for printf("\n");

Rispondi quotando