Zähleroperator in der for Schleife
-
Hi C Freunde
ich bin ein C Anfänger, und verstehe nicht so ganz wie ich folgendes intepretieren soll :
void Kcenter(double *x , int d , int Nx , int K , double *xc , int *indxc , int *indx , int *xboxsz , double *dist_C)
{
double *x_ind , *x_j;
register double temp ;
int i , j , ind = 1, nd , ibase;indxc++ = ind;
x_j = x;
x_ind = x + indd;for (j = 0 ; j < Nx ; x_j += d , j++)
{
dist_C[j] = (j==ind) ? 0.0 : ddist(x_j , x_ind , d);
indx[j] = 0;
}for(i = 1 ; i < K ; i++)
{
ind = idmax(dist_C , Nx);
indxc++ = ind;
x_j = x;
x_ind = x + indd;for (j = 0 ; j < Nx ; x_j += d, j++)
{
temp = (j==ind) ? 0.0 : ddist(x_j , x_ind , d);
if (temp < dist_C[j])
{
dist_C[j] = temp;
indx[j] = i;
}
}
}for (i = 0 ; i < K ; i++)
{
xboxsz[i] = 0;
}
for (i = 0; i < d*K; i++)
{
xc[i] = 0.0;
}for (i = 0 , nd = 0 ; i < Nx ; i++ , nd += d)
{
xboxsz[indx[i]]++; hier genau !!!!
steht es vlt für xboxsz[indx(i)]=xboxsz[indx(i)]+1??
UND WAS GENAU IST xboxsz[indx(i)]=???ibase = indx[i]*d;
for (j = 0 ; j < d; j++)
{
xc[j + ibase ] += x[j + nd];
}
}for (i = 0 , ibase = 0 ; i < K ; i++ , ibase += d)
{
temp = 1.0/xboxsz[i];
for (j = 0; j < d; j++)
{
xc[j + ibase] *= temp;
}
}
}
VIELEN LIEBEN dANK FÜR DIE Hilfe
-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
mathgirl schrieb:
Hi C Freunde
ich bin ein C AnfängerC++ Forumbot schrieb:
aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
-
int mhmain() { return 0x0; } void Kcenter(double *x , int d , int Nx , int K , double *xc , int *indxc , int *indx , int *xboxsz , double *dist_C) { double *x_ind , *x_j; register double temp ; int i , j , ind = 1, nd , ibase; *indxc++ = ind; x_j = x; x_ind = x + ind*d; for (j = 0 ; j < Nx ; x_j += d , j++) { dist_C[j] = (j==ind) ? 0.0 : ddist(x_j , x_ind , d); indx[j] = 0; } for(i = 1 ; i < K ; i++) { ind = idmax(dist_C , Nx); *indxc++ = ind; x_j = x; x_ind = x + ind*d; for (j = 0 ; j < Nx ; x_j += d, j++) { temp = (j==ind) ? 0.0 : ddist(x_j , x_ind , d); if (temp < dist_C[j]) { dist_C[j] = temp; indx[j] = i; } } } for (i = 0 ; i < K ; i++) { xboxsz[i] = 0; } for (i = 0; i < d*K; i++) { xc[i] = 0.0; } for (i = 0 , nd = 0 ; i < Nx ; i++ , nd += d) { xboxsz[indx[i]]++; // hier genau !!!! // das indx[i] dürfte einen Integer ergeben, dieser wird wohl den Index // deines xboxsz Arrays darstellen. // d.h. es wird auf den Platz zugegriffen, dessen Index == index[i] ist // das ++ bedeutet Inkremement, d.h. x++ wird zu x += 1 oder x = x + 1 // das gleiche gibt es auch für -- ibase = indx[i]*d; for (j = 0 ; j < d; j++) { xc[j + ibase ] += x[j + nd]; } } for (i = 0 , ibase = 0 ; i < K ; i++ , ibase += d) { temp = 1.0/xboxsz[i]; for (j = 0; j < d; j++) { xc[j + ibase] *= temp; } } }
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum C (C89, C99 und C11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi Leute,
danke für die Hilfe, aber eins ist mir noch bissl unklar
sorry bin noch ein super Anfängerfor (i=0; i<K; i++)
{
xboxsz[i]=0; <== hier ist doch xboxsz eine Null Matrix(1,K-1) bzw. Vektor
}
...
for (i=0; nd=0; i<Nx; i++; nd+=d)
xboxsz[indx[i]]++; <== das indx[i] die indx[i]-te Stelle von xboxsz angibt istmir klar aber was bekomme ich da raus?? was ist zum bsp.
wenn indx[2]=3; wie siehts dann aus
bei xboxsz[indx[2]]++=?????? was kommt da raus ???
... vlt etwa xboxsz[indx[2]]=xboxsz[indx[2]]+1
was ist dann hier xboxsz[indx[2]]=??? für ein wert??
}
-
Formatier bitte deinen Code wenn du ihn hier reinstellst. Sonst lesen das nur die ganz arg netten durch
PS: Du kannst auch Beiträge editieren.
-
was ist dann hier xboxsz[indx[2]]=??? für ein wert??
Eben eins mehr als vorher. Wenn xboxsz[indx[2]] vorher 0 gewesen sein sollte, dann ist der Wert jetzt 1.