# Produkt ohne Multiplizieren?



## Balde04 (26. Nov 2009)

Erstellen sie ein Programm, das nach Eingabe zweier Ganzzahlen deren Produkt ausgibt. 

Verwenden Sie als nur Addition, Subtraktion und  denVergleich von Ganzzahlen! 


So ich weis, das ich als Bsp. 4*5= 5+5+5+5+5

schreiben kann. 

habe einen Programmansatz allerdings komme ich bei meiner schleife nicht weiter.


import java.io.*;  

class ZahlenMulti 
{  
 public static void main (String[] args) throws IOException  
 {  
 BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in)); // Eingabestrom definieren  
 String input;  
 int zahl = 0;
 int zahlA;
 int zahlB;
 int Ergebnis;
 System.out.println("Geben Sie eine ganze Startzahl ein:");  
 input = stdin.readLine();  
 zahlA = Integer.parseInt( input ); // input in int konvertieren  


 System.out.println("Geben Sie eine ganze Endzahl ein:");  
 input = stdin.readLine();  
 zahlB = Integer.parseInt( input ); // input in int konvertieren  


 System.out.println("Start" +zahlA);  
 System.out.println("Ziel" +zahlB); 

Ergebnis = zahlA*zahlB;

while ( zahl < 0 )
{

System.out.println( zahl );
zahl++;
System.out.println("Ergebnis " +Ergebnis+);
  }  
 } 
}


hat jemand ne hilfestellung?


----------



## HoaX (26. Nov 2009)

a) Code-Tags verwenden
b) Versteh ich jetz das Problem nicht? Du hast Zahl1 und Zahl2. Also Zählst du von 1 bis Zahl2 und addierst so oft Zahl2 zum Ergebnis.


----------



## Plumperquatsch (26. Nov 2009)

Balde04 hat gesagt.:


> int zahl = 0;
> ...
> while ( zahl < 0 )


Hat's was damit zu tun?

edit: zu lange rumeditiert...


----------



## eRaaaa (26. Nov 2009)

balde04 hat gesagt.:


> so ich weis, das ich als bsp. 4*5= 5+5+5+5+5



Ahja 

```
while (zahlB > 0) {
			Ergebnis += zahlA;
			zahlB--;
		}
```

z.B.


----------



## 0x7F800000 (27. Nov 2009)

eRaaaa hat gesagt.:


> Ahja
> 
> ```
> while (zahlB > 0) {
> ...


Läuft in O(zahlB), pfui^^

Schon wieder Square & Multiply ;( :

```
private static double twice(double x){
		return x+x;
	}
	
	public static double multiply(double x, int n){
		return n==0?0:twice(multiply(x,n>>1))+((n&1)==1?x:0);
	}
```
Läuft in O(lg(n))


----------



## LasagneLegga (27. Nov 2009)

@Balde04
Schau dir mal die for-schleife an.
Informationen dazu: The for Statement



0x7F800000 hat gesagt.:


> Läuft in O(zahlB), pfui^^
> 
> Schon wieder Square & Multiply ;( :
> 
> ...


Wenn er nochnichtmal ne einfache While-Schleife gescheit hinbekommt, wird er diesen Quellcode bestimmt Hilfreich finden.


----------



## ARadauer (27. Nov 2009)

while verwendet man eher, wenn man nicht genau weiß wie lange... wenn man eine genau anzahl an iterationen hat also einer deiner Faktoren... dann nimmt man eher eine for Schleife...


```
int faktorA = 5;
      int faktorB = 6;
      
      int ergebnis = 0;
      for(int i =0; i < faktorB; i++){
         ergebnis+=faktorA;
      }
      System.out.println("Ergebnis: "+ergebnis);
```


----------



## 0x7F800000 (28. Nov 2009)

LasagneLegga hat gesagt.:


> Wenn er nochnichtmal ne einfache While-Schleife gescheit hinbekommt, wird er diesen Quellcode bestimmt Hilfreich finden.


Der soll den code ja auch nicht verstehen, sondern einfach nur zum selbstständigen nachforschen angeregt werden.


----------

