Äthopisches multiplizieren

GroveStreet

Mitglied
Hi Leute, ich als Programmieranfänger brauche eure Hilfe.... Die Aufgabe : Äthopisches Multiplizieren... Bsp. : 17*34 --> die linke Zahl wird immer halbiert(Komma wird abgeschnitten) bis sie gleich 1 ist. Die rechte zahl wird solange verdoppelt. Ist die linke Zahl, die halbiert wird (17), ohne Rest durch 2 teilbar, dann wird die dazugehörigen rechte Zahlen (34 usw....) addiert.

Bei mir gibt das Programm als ergebnis immer 0 aus. findet ihr meinen Fehler?
Ich hoffe ich konnte die aufgabenstellung gut formulieren:)
 

Anhänge

  • Äthopisches Multiplizieren1.PNG
    Äthopisches Multiplizieren1.PNG
    11 KB · Aufrufe: 49
  • Äthopisches Multiplizieren2.PNG
    Äthopisches Multiplizieren2.PNG
    15,3 KB · Aufrufe: 46

JStein52

Top Contributor
Poste doch bitte mal deinen aktuellen code hier, dann kann man ihn kopieren (zum testen) und zitieren ....
Oder du debugst mal und schaust dir an was er so treibt
 

BuddaKaeks

Bekanntes Mitglied
Ich verstehe nicht ganz was das Program machen soll...
Es gibt diese for-Schleife, in der du a solange durch 2 teilst, wie a ... gleich 1 ist.
Sollte a also gleich 1 sein, wird es ein mal durch 2 geteilt, und ist dann gleich 0

Abgesehen davon verwendest du a und b nach dieser for Schleife nie wieder, also egal was du dabei ausrechnest (oder ausrechnen mchstest) wird im nachfolgenden Teil nicht mehr verwendet.
Auch ist die if-Anweisung mit x>0 && y>0 unnötig, da anderenfalls bereits 0 als ergebnis zurrückgegeben wurde (Unter der Annahme, dass beide Argumente positiv sein müssen).

Zudem, anstatt

int erg = 0;
return erg = 0;

schreibe einfach return 0;
zudem würde man im Normalfall nicht return erg = 0; sondern höchstens return erg; schreiben (erg ist bereits 0, und mussnicht in der return anweisung neu gesetzt werden)
 

GroveStreet

Mitglied
import java.util. Scanner;
public class AathopischesMultiplizieren {


public static int rechnen (int x, int y){
int a=x;
int b=y;
int z=0;
int erg=0;
if(x==0||y==0){
return 0;
}//end of if

if(x>0 && y>0){
for(int i=0;a==1;i++){
a=a/2;
b=b*2;
z++;
}//end of for
int [] multi_e=new int[z];
int[] multi_z=new int[z];
for(int k=0;k<z;k++){
x=x/2;
y=y*2;
multi_e[k]=x;
multi_z[k]=y;
}//end of for
for(int d=0;d<z;d++){System.out.println(multi_z[d]);}
for(int l=0;l<z;l++){
if(multi_e[l]%2==0){
erg=erg+multi_z[l];
}//end of if
}//end of for

}//end of if
return erg;
}//end of method

public static void main (String[]args){
Scanner sc_ref=new Scanner(System.in);
System.out.println("Erster Multiplikator eingeben!");
int x = sc_ref.nextInt();
System.out.println("Zweiter Multiplikator eingeben");
int y = sc_ref.nextInt();
sc_ref.close();

int erg=AathopischesMultiplizieren.rechnen(x, y);
System.out.println("Ergebnis:"+erg);
}//end of main
}//end of class
 

GroveStreet

Mitglied
Hab Eure Verbesserungen eingebaut und es funktioniert!! Geil! Danke euch!!! Hatte aber auc heinen kleinen formulierungsfehler in meiner Beschreibung. Nächstes mal poste ich einfach die Aufgabenstellung mit hoch:p
Ich klatsch mal den neuen Quellcode dazu :
import java.util. Scanner;
public class AathopischesMultiplizieren {


public static int rechnen (int x, int y){
int a=x;
int b=y;
int z=0;
int erg=0;
if(x==0||y==0){
return 0;
}//end of if

if(x>0 && y>0){
for(int i=0;a!=0;i++){
a=a/2;
b=b*2;
z++;
}//end of for
int [] multi_e=new int[z];
int[] multi_z=new int[z];
for(int k=0;k<z;k++){
multi_e[k]=x;
multi_z[k]=y;
x=x/2;
y=y*2;
}//end of for

for(int d=0;d<z;d++){System.out.println("Rechte Spalte"+multi_z[d]+"\t");}//end of for
for(int d=0;d<z;d++){System.out.println("Linke Spalte"+multi_e[d]+"\t");}//end of for
System.out.println("Länge Array:"+multi_z.length);

for(int l=0;l<z;l++){
if(multi_e[l]%2!=0){
erg=erg+multi_z[l];
}//end of if
}//end of for

}//end of if
return erg;
}//end of method

public static void main (String[]args){
Scanner sc_ref=new Scanner(System.in);
System.out.println("Erster Multiplikator eingeben!");
int x = sc_ref.nextInt();
System.out.println("Zweiter Multiplikator eingeben");
int y = sc_ref.nextInt();
sc_ref.close();

int erg=AathopischesMultiplizieren.rechnen(x, y);
System.out.println("Ergebnis:"+erg);
}//end of main
}//end of class
 

BuddaKaeks

Bekanntes Mitglied
Noch ein paar Verbesserungsvorschläge:

for(int i=0;a!=0;i++) -Schleife kannst du zu einer while(a!=0) Schleife umbauen, da du in der for Schleife weder das "i" benutzt, noch das i in der Abbruchbedingun der for Schleife benutzt wird.
Das b=b*2 kannst du dir auch sparen, da du dieses b Später nie benutzt (einziger Sinn der For-SChleife: auszurechnen, welches die kleinste Power of 2 ist, die größer als die Eingangsvariable x ist.)
Die Variable b musst du auch überhaupt nicht deklarieren, da die einzige Nutzung wegen oben genantem Punkt wegfällt.

Die if(x>0 && y>0) Anweisung kannst du dir auch sparen, siehe meinen vorherigen Post.

Anstatt der ganzen x=x*2, y=y/2 etc. schreib doch einfach x*=2 und y/=2 etc. (Ist kürzer und IMHO besser lesbar)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
AhmadSlack Verzweigungen zahlen multiplizieren Java Basics - Anfänger-Themen 4
D String mit int multiplizieren? Java Basics - Anfänger-Themen 16
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
E 2 Matrizen multiplizieren - Output fehlt... Java Basics - Anfänger-Themen 5
F mehrere eingegebene Zahlen mit Zahlen von 1-9 multiplizieren Java Basics - Anfänger-Themen 18
G Binärzahlen multiplizieren Java Basics - Anfänger-Themen 5
E Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 7
E Gleitkomma zahlen mathemathisch korrekt multiplizieren Java Basics - Anfänger-Themen 5
O Matrix Multiplizieren Java Basics - Anfänger-Themen 4
J Arrays multiplizieren Java Basics - Anfänger-Themen 1
Z Matrix mit Vektor multiplizieren Java Basics - Anfänger-Themen 13
L Array multiplizieren und ausgeben Java Basics - Anfänger-Themen 3
O Werte aus ArrayList multiplizieren und dann Ergebnis addieren Java Basics - Anfänger-Themen 3
H Matritzen multiplizieren Java Basics - Anfänger-Themen 10
M Datentypen Ausdehnungskoeffizienten multiplizieren Java Basics - Anfänger-Themen 2
Semox Matrix multiplizieren Java Basics - Anfänger-Themen 4
N Vektoren multiplizieren Java Basics - Anfänger-Themen 8
D Zwei Integer Arrays multiplizieren Java Basics - Anfänger-Themen 3
B Produkt ohne Multiplizieren? Java Basics - Anfänger-Themen 7
S [HILFE] Brüche addieren, multiplizieren, kürzen Java Basics - Anfänger-Themen 17
P Exponenten bei Potenzen multiplizieren Java Basics - Anfänger-Themen 4
G String aus Zahlen multiplizieren -> unendlich große ! Java Basics - Anfänger-Themen 13
M zwei zweidimensionale arrays multiplizieren Java Basics - Anfänger-Themen 2
H Genauigkeit beim Multiplizieren zweier Zahlen Java Basics - Anfänger-Themen 2
D Inhalte von Stacks miteinander multiplizieren Java Basics - Anfänger-Themen 4
G Zwei mehrdimensionale Arrays multiplizieren Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben