Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: Array mit komplizierter Funktion durchs.
AUTOR BEITRAG
DoomTheBrain

RANG Skill Apprentice

#1 - 13.03 02:34

ich habe hier ein array in java. das array ist eindimensional, wiederspiegelt aber ein zweidimensionales feld.

d.h.

code:

a b c d e
f g h i j
k l m n o


wird in einem array wie folg gespeichert: [a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,...]

ich kenne die breite und die höhe des feldes.

was ich noch kenne ist eine variable x, die die Anzahl der Variabeln angibt, die zusammengezählt werden sollen. das heiist wenn x = 2 ist. dann werden a, b, f und g zu einem neuen Wert zusammengezählt.

Nun bin ich schon die längste Zeit am suchen nach einer passenden gleichung, die für alle möglichen x die passenden anzahl an werten zusammenschreibt.

code:

for (int i = 0; i < breite*höhe; i++) {

und jetzt was soll hier rein? ich komme einfach nicht drauf wegen dem variaben x

}



wäre sehr dankbar um hilfe. danke

P.S: zur not würde mir auch schon eine funktion reichen die z.b. nur für x = 4 gilt.
SirLant

RANG Hardcore Sucker

#2 - 13.03 09:36

Ok, also ich werde das Array mit den Werten array nennen und davon ausgehen, dass es ein char-Array ist.
code:

//Kleine Helfermethode um zweidimensional auf das Array zuzugreifen
//width ist die Anzahl der Einträge pro Zeile, in deinem Beispiel oben also 5
char at( int x, int y, char[] array, int width ) {
  return array[ x * width + y ]; // springt in x.te Zeile und zum y. Element
}

//Alle aufaddieren die in einer "Submatrix" stehen
char newValue = 0;
for( int x = 0; x < höhe; ++x )
 for( int y = 0; y < breite; ++y )
  newValue += at( x, y, array, width );




btw. hi doom
DoomTheBrain

RANG Skill Apprentice

#3 - 13.03 10:23

hallo sirlant

sieht ja shcon mal gut aus. nur was ich nicht ganz verstehe. wo kommt da der wert x for? also der wert der angibt wie gross die submatrix istS?
SirLant

RANG Hardcore Sucker

#4 - 13.03 10:56

Ach so an den habe ich gar nicht gedacht, also dazu musst du einfach höhe und breite entsprechend initialisieren, wenn du 2x2 haben willst einfach höhe=2 und breite=2 und wenn du 3x2 haben willst höhe=3 und breite=2 etc.
Da deine Matrizen quadratisch sind kannst du im Grunde höhe oder breite weglassen und nur eines der beiden benutzen (dann entspricht höhe/breite gerade deinem x).
DoomTheBrain

RANG Skill Apprentice

#5 - 13.03 10:59

hmm ok danke. mal schauen ob ich das jetzt alles richtig zusammensetzen kan
Crush (steht auf die extremeren Sachen)

RANG Deckschrubber

#6 - 13.03 12:57

Mal überlegt dir einfach eine Containerklasse für die Matrizen zu schreiben? Könnte vielleicht einiges vereinfachen.

Welcher Programmierguru war es nochmal der mal gesagt hat, dass das Geheimnis guter Programmierung darin besteht, dass wenn man intelligente Datenstrukturen entwickelt sich die Lösungen für die meisten Probleme von alleine ergeben?