J'ai cette fonction où deux vecteurs sont comparés entre eux et le programme trouve la somme de la différence au carré du vecteur.C++ Trier un tableau de pointeurs dans l'ordre suivant
double Search::NNS(vector<vector<double>> bb, vector<vector<double>> aa)
{
int M = 768; int N = 1024;
int R = 49; int C = 36;
//double SSD[] = MainVectorBlock[] - WallyVector[];
//double SSD[] = SSD[] * SSD[];
//sum = sum + SSD[];
vector<vector<double>> &MainIMG = bb;
vector<vector<double>> &WallyIMG = aa;
double *SSD = new double[R*C];
double sum = 0;
for (int bx = 0; bx < M; bx += R)
for (int by = 0; by < N; by += C)
{
Compare = new double*[R];
for (int x = 0; ((x < R) && ((bx + x) < M)); ++x)
{
Compare[x] = new double[R];
for (int y = 0; ((y < C) && ((by + y) < N)); ++y)
{
if ((bx + x) >= M)
{
cout << Compare[bx + x] << Compare[by + y] << " ";
}
//cout << MainIMG[bx + x][by + y] << " ";
Compare[x][y] = MainIMG[bx + x][by + y] - WallyIMG[x][y];
Compare[x][y] = Compare[x][y] * Compare[x][y];
//sum += Compare[x][y];
SSD[R*C] += Compare[x][y];
//SSD[R*C] = sum;
//cout << Compare[x][y] << " ";
}
}
//cout << "\n\n\n" << endl;
//cout << sum << endl;
//cout << SSD[R*C] << "\t" << sum << endl;
for (int i = 0; i < R*C; i++)
{
for (int j = 0; j < R*C; j++)
{
if (SSD[i] > SSD[j])
{
int temp = SSD[i];
SSD[i] = SSD[j];
SSD[j] = temp;
}
}
}
}
for (int a = 0; a < R*C; a++)
{
cout << SSD[a] << endl;
}
return 0;
}
Je peux afficher toutes la somme des valeurs de différence au carré, mais lorsque je tente de trier les valeurs dans l'ordre croissant, je continue à obtenir cette valeur -6.27744e + 66. J'ai essayé de changer la boucle et de la placer dans la boucle principale, mais je continue d'obtenir cette valeur.
Le bon outil pour résoudre ces problèmes est votre débogueur. Vous devez parcourir votre code ligne par ligne * avant * de demander Stack Overflow. Pour plus d'aide, veuillez lire [Comment déboguer de petits programmes (par Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Au minimum, vous devriez [modifier] votre question pour inclure un exemple [Minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) qui reproduit votre problème, ainsi que les observations que vous avez faites dans le débogueur. –
-6.27744e + 66 ressemble à un virgule flottante non initialisée pour moi. Etes-vous sûr de toujours lire les éléments dans les limites du tableau? – Bathsheba
@ πάνταῥεῖ J'ai utilisé le débogueur mais je n'arrive toujours pas à comprendre pourquoi cela se produit – MR1