# EinmalEins



## Verzweilte (13. Mai 2010)

Hallo,
also ich bin am verzweifen..
ich habe diesen Code geschrieben, Aufgabe ist es das 1x1 auszugeben in der Form :
vorwärts
 1
 2 4
 3 6 9
 4 8 12 16
 5 10 15 20 25
 6 12 18 24 30 36
 7 14 21 28 35 42 49
 8 16 24 32 40 48 56 64
 9 18 27 36 45 54 63 72 81
 10 20 30 40 50 60 70 80 90 100
rückwärts
 100
 90 81
 80 72 64
 70 63 56 49
 60 54 48 42 36
 50 45 40 35 30 25
 40 36 32 28 24 20 16
 30 27 24 21 18 15 12 9
 20 18 16 14 12 10 8 6 4
 10 9 8 7 6 5 4 3 2 1
also ohne doppelungen usw.
klappt soweit auch alles,
eigentliche aufgabe ist es aber die vorwärts berechnung anders zu erarbeiten. Die Zeilen sollen in einer while schleife ausgedrückt werden und die Spalten in einer For-schleife,
bei der rückwärts berechnung soll es dann genau andersherum sein.
egal wie ich es dreh und wende.. ich schaff es einfach nich.
Vielleicht kann mir jemand helfen. Wir sind erst am Anfang von Java, daher darf ich dabie auch keine besonderen dinge verwenden, die wir noch nicht hatten. also sollte es schon einfach gelöst werden können.
danke!
hier der code:

[] 
public class jsd
{
  public static void main( String[] args)
  {
	  System.out.println("vorwärts");
	  int i = 1; // deklarieren(int) und initlisieren(1) der variable i
	  int j = 1; // deklarieren(int) und initlisieren(1) der variable i
	 // Aufgabe 3.1
	  // whie-Schleife zum Ausgeben der Multiplikation 1 * 1-10
	  //habe es ausgeklammert, da es in der Ausgabe der nächtes Teilaufgabe stört.
	 // while ( i <= 10 ) {
	//	  System.out.print( " " + i*j);
	//	  i++;
	//  }

	  //Aufgabe 3.2 Forschleife zum Ausgeben des kleinen 1x1, ohne Doppelungen
	  for( i = 1; i <= 10; i++) 
    {      
    		for( j = 1; j <= 10; j++)
      {

    		for ( i = 1; i <= j; i++)// Schleife, die die doppelten Rechnungen aussortiert mit i kleiner gleich j

    			System.out.print( " " + i * j ); // Hochzichen für Leerzeichen zwischen den Ergebnissen zur besseren Übersicht
    			System.out.println( ""); // Zeilenwechsel mit println

    }
    }
    		System.out.println("rückwärts");
    		 //Aufgabe 3.2 Forschleife zum Ausgeben des kleinen 1x1, ohne Doppelungen

    		  int z = 10; // deklarieren(int) und initlisieren(1) der variable i
    			int y = 10;

    			for( z = 10; z >= 1; z--) 
    		    {      
    		    		for( y = 10; y >= 1; y--)
    		      {

    		    		for ( z = 10; z >= y; z--)// Schleife, die die doppelten Rechnungen aussortiert mit i kleiner gleich j

    		    			System.out.print( " " + z * y ); // Hochzichen für Leerzeichen zwischen den Ergebnissen zur besseren Übersicht
    		    			System.out.println( "");
    		      }
}
  }
}
[/ Java]


----------



## blawa (13. Mai 2010)

hier das vorwärts mit while und for:

```
public class test1x1 {

    public static void main(String args[]) {
        int i=0,j=0;
        String s="";
        while(i<10) {
            i++;
            for(j=1;j<=i;j++) {
                s+=""+(i*j)+" ";
            }
            System.out.println(s);
            s="";
        }
    }

}
```


----------



## verzweifelte1 (13. Mai 2010)

Wär auch cool, wenn du das kurz erklären könntest, wo hier der Unterschied zu meiner Version ist, denn laufen tut es bei mir ja auch.. werden jetzt mit den Schleifen die jeweiligen Zeilen/Spalten angesprochen?
Vielen Dank!


----------



## Landei (13. Mai 2010)

```
public static void main(String args[]) {
        for(int i = 1; i < 10; i++) {
            for(j = 1; j <= i; j++) {
                System.out.print("" + (i*j) + " ");
            }
            System.out.println();
        }
    }
```


----------



## verzweifelte2 (13. Mai 2010)

Denn Code hab ich ja auch schon.. es geht darum, eine while schleife zu schreiben die für die zeilen und eine for, die für die spalten zuständig ist und andersherum..


----------



## Landei (13. Mai 2010)

Jede for-Schleife ist zu einer while-Schleife äquivalent, in Pseudo-Code:


```
for(Initialisierung; Bedingung; Änderung) {
   Irgendwas
}
```

ist dasselbe wie:


```
Initialisierung
while(Bedingung) {
   Irgendwas
   Änderung
}
```

Wo ist da die Schwierigkeit?


----------



## agentone (13. Mai 2010)

Wie Landei schon erklärt hat, sind alle Schleifen letztlich gleich, können also ineinander übergeführt werden.
for-Schleifen benutzt man meistens, wenn man die Anzahl der Durchläufe bereits kennt.
while-Schleifen, wenn es eine klare Abbruchbedingung gibt und die Schleife möglicherweise nie durchlaufen werden muss.
do-while-Schleifen benutzt du ähnlich wie while-Schleifen, werden aber immer mind. 1 mal durchlaufen.

Vermutlich solltet ihr also einfach ein bisschen mit den Schleifen üben, denn in der Praxis ist es dem Programmierer überlassen, welche Schleife er für welche Problemstellung benutzt.


----------

