Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo megageiles Forum,
ich stehe irgendwie gerade tierisch aufm Schlauch und benötige demzufolge einige Denkhilfen von euch. Ich habe folgendes Problem:
Ich habe ein Array mit endlich vielen Einträgen zwischen 200 und 400. Nun habe ich ein zeweites Array erzeugt in dem eine bestimmte Summe steht und zwar immer die x-forderen Werte aufsummiert.
Ein Quick and Dirty-Variante habe ich schon.
An die Funktion werden das Ausgangsarray mit allen Zahlen übergeben und die Anzahl der zu berücksichtigenden vorhergehenden Werte.
Als Problem habe ich das die ersten Werte des Ausgangsarrays noch nicht x-beliebig viele Vorgänger haben.
Wie gesagt ich habe jetzt eine Funktion bei der lauter if-Schleifen das Problem lösen, doch das kann einfach nicht die Lösung meines Problems sein.
Ich hoffe ich konnte mich verständlich ausdrücken.
vielen Dank für eure Hilfe
Balli
Sorrie, habe den aktuellen Quellcode gerade in die Tonne gheauen bin gerade ein wenig frustriert.
Hier das Problem mal in einem Pseudocode:
funktion summe (float [] beliebiges 1D-Array x, anzahl_zuberücksichtigender_vorgänger m)
{
z.b. m=3;
neues Array y= länge von x;
y0=x0;
y1=x0+x1;
y2=x0+x1+x2;
y3=x1+x2+x3;
y4=x2+x3+x4;
.
.
}
Für ein festes m bekomme ich das ja auch schmudelig hinprogrammiert, aber eben nicht für ein beliebiges m. Und ich muss eben auch die ersten Werte berücksichtigen.
public static int[] specialSum(int[] x, int m) {
int[] y = new int[x.length];
for(int i=0; i<y.length; i++) {
int k=i-(m-1);
if(k<0)
k = 0;
for(;k<=i; k++)
y[i] +=x[k];
}
return y;
}
public static int[] sum(int[] x, int m) {
List<Integer> result = new ArrayList<Integer>();
//init
if (x.length > 0) {
result.add(x[0]);
} else {
return new int[0];
}
for (int i = 1; i < x.length; i++) {
if (i < m) {
result.add(result.get(i - 1) + x[i]);
} else {
int sum = 0;
for (int j = 0; j < m; j++) {
sum += x[i - j];
}
result.add(sum);
}
}
int[] r = new int[result.size()];
for (int i = 0; i < r.length; i++) {
r[i] = result.get(i);
}
return r;
}