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");