# Quadrieren einer Zahl



## pipi195 (11. Dez 2011)

Leute ich brauch eure Hilfe, ich komm mit der aufgabe gar nicht zurecht 

Im Folgenden sei eine natürliche Zahl namens n gegeben. Implementieren Sie ein Programm,
welches das Quadrat von n berechnet, OHNE dabei die mathematische Operation der
Multiplikation zu verwenden. Der Operator + für die Addition steht Ihnen zur Verfügung.

a) Erstellen Sie dafür eine ausführbare Programmdatei Square.java.

b) Deklarieren Sie im Hauptprogramm eine Variable number für die zu quadrierende Zahl.
Initialisieren Sie dies mit einem geeigneten Startwert, den Sie beim Aufruf des Programms
an dieses übergeben. Verwenden Sie dazu die folgende Anweisung:
final int number = Integer.parseInt(args[0]);

c) Realisieren Sie zur Lösung der Aufgabe zunächst einen Algorithmus, der anstelle der
Multiplikation von n mit sich selbst n-mal den Wert von n addiert.
Implementieren Sie dazu eine Methode calculateSquareByAddingNumber().
Deklarieren Sie diese Methode als private static. Das Schlüsselwort static
besagt, dass diese Methode zur Klasse an sich gehört und somit auch verfügbar ist, OHNE
dass Sie zunächst ein Objekt dieser Klasse anlegen müssen.
Die Methode empfängt als Parameter die zu quadrierende Zahl und liefert als Ergebnis das
Quadrat dieser Zahl zurück.
Berechnen Sie sodann im Rumpf der Methode das Quadrat von n durch n-maliges
Addieren von n und liefern Sie das Ergebnis an den Aufrufer zurück.

d) Realisieren Sie im Hauptprogramm die folgende Ausgabe, hier für das Beispiel
number=11:

Danke euch im Vorraus


----------



## c2delegate (11. Dez 2011)

ok und wie ist dein mathematischer ansatz dies zu realisieren?


----------



## Der Müde Joe (11. Dez 2011)

Wo ist das Problem (Abgesehen davon die Aufgabe selber lösen zu wollen)?

n^2 = n * n

oder n mal n zu n addieren


----------



## Marcinek (11. Dez 2011)

c2delegate hat gesagt.:


> ok und wie ist dein mathematischer ansatz dies zu realisieren?



Oder dein finanzieller 

Schreibe mir eine PM. Ich mache günstig Hausaufgaben.


----------



## c2delegate (11. Dez 2011)

Marcinek hat gesagt.:


> Oder dein finanzieller
> 
> Schreibe mir eine PM. Ich mache günstig Hausaufgaben.



@Der Müde Joe, this !

finde es schon irgendwie dreist solch eine simple hausaufgabe zu posten und im vorraus bedanken für die lösung, ohne den finger krumm gemacht zu haben oder auch nur eine gehirnzelle angestrengt zu haben. zumal die einzelnen punkte zur gegebenen lösung führen, man wird da fast an der hand zur lösung geführt


----------



## dehlen (11. Dez 2011)

```
public class Untitled {
	public static void main(String[] args) {
		System.out.println(""+Methodenaufruf mit zwei Zahlen)
	}
	
	Methode:privat statisch Rückgabewert(zwei übergabeparameter)
			Falls(z1 gleich 0) {
			gib 0 zurück
		}
		ansonsten {
			Gib zurück: (Methodenaufruf z1-1, z2) plus z2
		}
	}
}
```

EDIT:
Ist natürlich noch nicht dein Programm und rechnet auch keine Quadratzahlen, sondern kann alle Zahlen multiplizieren, aber von der Idee her.....
Stichwort Rekursion, Übergabeparameter...


----------



## ARadauer (11. Dez 2011)

Also du must quadrieren ohne multiplizieren... erster schritt mach multiplizieren ohne multiplizieren... wie geht das? in einer schleife immer den wert addieren, wobei die zählvariable der multiplikator ist...


----------



## dehlen (11. Dez 2011)

Ok also spezifisch auf deine Aufgabe bezogen wäre der Pseudocode wohl so oder so ähnlich :

```
public class Square {
	
	public static void main(String[] args) {
	
	final int number = Integer.parseInt(args[0]);
		System.out.println("Für 11*11: "+calculateSquareByAddingNumber(11));
		System.out.println("Für "+number+"*"+number+": "+calculateSquareByAddingNumber(number));
	}
	
	private static int calculateSquareByAddingNumber(int z1) {
	int z = 0;
		Solange(i = z1 und i kleiner 0; verringere i um 1) {
	
      z ist gleich z plus z1;
   }
		Gebe z zurück;

	}
}
```


----------



## pipi195 (11. Dez 2011)

ich habs jetzt so: 
[Java]
class Square {

	public static void main(String[] args){

	final int number = Integer.parseInt(args[0]);
		System.out.println("Für "+number+"*"+number+": "+calculateSquareByAddingNumber(number));
	    }

	    private static int calculateSquareByAddingNumber(int number) {
	    int z = 0;
	    	for(int i = number; i > 0; i--){
	    		z = z + number;		

	    }
			return z;
	    }}

[/code]

aber ich kann es nicht ausführen. Wo liegt mein Fehler? Wo gib ich denn an dass ich jetzt zb den Wert 11 haben möchte?


----------



## dehlen (11. Dez 2011)

Beispiel:
javac Square 11
Musst die 11 schon übergeben wenn du sie per args[0] einliest.


----------



## Der Müde Joe (11. Dez 2011)

>javac Square 11

Der Runtime nicht dem Compiler!

java net javac


----------



## dehlen (11. Dez 2011)

Ahhh natürlich, nicht bei der Sache gewesen beim schreiben 
also java Square 11 natürlich


----------



## pipi195 (11. Dez 2011)

das versteh ich jetzt nicht so richtig.
ich mache das ganze über eclipse.
wo soll ich hier java Square 11 eingeben?
Tut mir leid für die dummen fragen x)) 
bin noch recht neu in diesem gebiet.


----------



## Der Müde Joe (11. Dez 2011)

Bei den Run Configurations unter Arguments bei Eclipse.

EDIT:
Programm Arguments um genau zu sein.


----------



## pipi195 (11. Dez 2011)

dann kommt bei mir eine fehlermeldung :/

Exception in thread "main" java.lang.NumberFormatException: For input string: "java"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at Square.main(Square.java:6)


----------



## Der Müde Joe (11. Dez 2011)

Nur 11 eingeben.

Das andere ist von der Shell.


----------



## pipi195 (11. Dez 2011)

@ der müde joe
Ich danke dir vielmals 

eine frage noch: geht das nur mit der run configuration oder geht das noch anders?


----------



## Der Müde Joe (11. Dez 2011)

Nein.

Wenn du die Args der main-Methode benutzt, dann müssen die irgenwie reinkommen. Normalerweise eben über doe Konsole in der Form:

java Programm arg0 arg1 argX

Aus Eclipse hast du eben keine solche Konsole. Musst sie aber irgendwo angeben. Eben dort wo man definiert, wie man das Programm startet.


----------



## Landei (11. Dez 2011)

Übrigens: Man muss nicht multiplizieren können, um quadrieren zu können:

1² = 1
2² = 1 + 3
3² = 1 + 3 + 5
4² = 1 + 3 + 5 + 7
5² = 1 + 3 + 5 + 7 + 9

Erkennst du ein Muster?


----------

