Dreiecksamatrix

Status
Nicht offen für weitere Antworten.

Nicole

Mitglied
Hallo!

Ich habe einen Vector und will ihn ungefähr so in eine Datei ausgeben:
a
b 0
c 1 3
d 2 4 5

Allerdings schaffe ich es nur so:
a
b 0
c 1 2
d 3 4 5

Weiß jemand, was ich an dem Code ändern muss?

Code:
output.writeBytes(labels.elementAt(0)+lsep);
            int h = 2;
            for (int j = 0, k = 0; j < dist.size(); k++,j++) {
                if(k == level) {
                    output.writeBytes(lsep+labels.elementAt(h)+" ");
                    k = 0;
                    level++;
                    h++;
                }
                if(j==0) {
                      output.writeBytes(labels.elementAt(1)+" ");
                      output.writeBytes(dist.elementAt(j)+" ");
                }
                else
                output.writeBytes(dist.elementAt(j)+" ");
            }
in labels sind die Zeilenanfänge gespeichert und in dist die Werte!

Danke,
Nicole
 
B

bygones

Gast
sorry, ich versteh nicht wie deine Vectoren aufgebaut sind ?!
 
B

bygones

Gast
ok - du willst also nicht zeilenweise auslesen, sondern spaltenweise... richtig ?
 

Nicole

Mitglied
Genau, und da ich mit Randomaccesfile arbeite muss das Ganze auch sofort geschrieben werden.
Also ich kann nicht erst die erste Spalte schreiben und dann die nächste etc.
Ich versuche gerade dist in Vector[] dist zu verändern, sodass ich praktisch alle Werte für die erste Spalte in dist[0} speichere. Ob das funktioniert?
 
B

bygones

Gast
interessant, d.h. bei noch einer Zeile soll es so aussehen:

a
b 0
c 1 4
d 2 5 7
e 3 6 8 9


??
 

Nicole

Mitglied
Also ich habe die Werte jetzt in einem Vectorarray gespeichert, aber mit der ausgabe...

a
b dist[0].elementAt(0)
c dist[0].elementAt(1) dist[1].elementAt(0)
d dist[0].elementAt(2) dist[1].elementAt(1) dist[2].elementAt(0)
 

Nicole

Mitglied
Ja! Ich habe eine Eingabe, bei der die Anzahl der Gruppen (a,b,c,d ...) angegeben wird, und jede soll mit jeder verglichen werden.

Das sind dann die Werte, die in die Matrix sollen!
Also Wert 0 ist der Vergleich von Gruppe 1 mit Gruppe 2.
 
B

bygones

Gast
Das wäre eine Möglichkeit:
Code:
public static void main(String[] args) {
// DUMMY VECTOREN WERDEN GEFÜLLT
			Vector v1 = new Vector();
			v1.add("a");
			v1.add("b");
			v1.add("c");
			v1.add("d");
			v1.add("e");
			
			Vector v2 = new Vector();
			for (int i = 0; i < 10; i++) {
				v2.add(i+"");
			}

// HIER BEGINNT ES EIGENTLICH 

			int levelSize = v1.size();
			int levelLeap = levelSize - 2;
			int currentIndex;
			System.out.println(v1.elementAt(0));
			
			for (int i = 1; i < levelSize; i++) {
				System.out.print(v1.elementAt(i));
				System.out.print(" " + v2.elementAt(i-1));
				currentIndex = i-1;
				for (int j = i-1, leap = levelLeap; j >0; j--, leap--) {
					currentIndex += leap;
					System.out.print(" "+v2.elementAt(currentIndex));
				}
				System.out.println();	
			}
		}
Statt dem System.out.println() schreibst du es halt einfach in die Datei. Wenn die Werte (also v2) nur eine Zahlenfolge ist (0 - 10 oder so), brauchst du eigentlich keinen zweiten Vector, ich habe ihn aber dringelassen, falls es keine durchgehende Folge ist !
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben