Algorythmus

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
moin

ich steh grad irgendwie auf dem schlauch und vielleicht kann mir hier einer weiter helfen...

also folgendes:

ich habe ein feld das mit nullen und einsen gefüllt ist das ein 2d feld darstellt


also z.b.

ein 2d feld:

0 0 0 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 1
0 0 0 0 1

in ein 1d feld übernommen (pos: 0-24):

0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1

so nun möchte ich folgendes erreichen:

von pos 24 ausgehend möchte ich alle zahlen ausgeben die in abstand von 3 zeichen stehn
also pos

12 13 14
17 18 19
22 23 24

besonderheit hierbei:

wenn die anfangspos z.b. 21 ist und die weiter 3 ist, sollen die ausgegeben werte wie folgt aussehn:

10 11
15 16
20 21

bekannte größen:
- anfangspos
- weite der zu suchenden zeichen
- breite und höhe des feldes

also ich versuch dafür nen algorythmus zu programmieren aber irgendwie steh ich auf nem schlauch ...
kann mir da vielleicht wer helfen ?

mfg Kala
 

foobar

Top Contributor
Du brauchst erstmal eine Forschleife, die über dein Array läuft über den Index kannste dann auch auf das 3. Element zugreifen. Wo liegt das Problem?
 

Kaladial

Bekanntes Mitglied
ja for schleife is mir schon klar ...
nur ich steh grad irgendwie auf dem schlauch ich bekomm das was ich will eignetlich net raus ...

problem ist eigentlich das wenn die weite der zu suchenden zeichen größer ist als die position zum "linken rand des feldes" ist...

also z.b.

0 0 0
0 0 0
0 0 0

pos ist bei 7 die zu suchende weite läge bei 3..

also soltle der mir
0 0
0 0
0 0
ausgeben (pos 0 1 3 4 6 7)
aber ja das macht er eifnach nicht ...
und ich hab grad irgendwie ne blockade und bekomm es net hin ...
 

Kaladial

Bekanntes Mitglied
ich habs mittlerweile thx ...

Code:
					int pos = 35;
					int width_r=10;
					int zeichenabstand=7;
					
					int leng = feld.length;
					
					int wx=(pos+1)%width_r;
					int wy=(pos/width_r)+1;
					
					int zx=0;
					if(zeichenabstand>wx){
						zx=wx;
					}else{
						zx=zeichenabstand;
					}

					int zy=0;
					if(zeichenabstand>wy){
						zy=wy;
					}else{
						zy=zeichenabstand;
					}
					
					int first = ((pos+1)-zx)-(width_r*(zy-1));
					int a=0;
					int b=0;
					for(int y=0; y<leng/width_r; y++){
						a=(first+(width_r*y));
						b=(((first+(y*width_r))+zeichenabstand));

						if(y<zy){
							for(int x=a; x<b; x++){
								System.out.print(" "+feld[x]);
							}
						}else{
							break;
						}
					}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben