Multiplikation durch Addition, Subtraktion und Vergleich von Zahlen

Seatdriver87

Mitglied
Hallo Leute,

ich beschäftige mich jetzt mit dem zweiten kniffligen Ding:

Java:
 import java.io.*;
class multiplikation
{
public static void main (String[] args) throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));
String input;

int multiplikant;
System.out.println("Geben Sie eine ganze Zahl, den Multiplikanten ein:");
input = stdin.readLine();
multiplikant = Integer.parseInt( input ); 

int multiplikator;
System.out.println("Geben Sie eine ganze Zahl, den Multiplikator ein:");
input = stdin.readLine();
multiplikator = Integer.parseInt( input ); 

int a = multiplikant, b = multiplikator, c = 0; 

do {
         c = c + b;
         a = a - 1;  { }
       } while (a > 0);

System.out.println( c );


}
}

Die Aufgabe war es, eine Multiplikation durch Addition, Subtraktion und Vergleich von Ganzzahlen darzustellen. Ich habe jetzt 3 Stunden da gesessen und überlegt und bin einfach nicht drauf gekommen. Ich habe nun das obige gefunden. Ich verstehe nun nicht warum es funktioniert, kann mir das einer erklären? Möglichst für ganz dumme?!
 

Seatdriver87

Mitglied
Ahhhhhhhhhhhh

Ich hab es verstanden ....

Das ist ja voll easy ! Und ich sitz hier zehntausend Lichtjahre und es ist so einfach, ich könnt weinen :)

Aber kommt man da als normalsterblicher drauf?!
 
F

Firephoenix

Gast
Aber kommt man da als normalsterblicher drauf?!

Unter der Annahme das ich normalsterblich bin:

-Überlegen was man bei x*y macht, nämlich x y-mal zu sich selbst addieren.
-Für "y-mal machen" die for-schleife auspacken
-akkumulatorvariable für die summe einfügen
-das ganze in eine methode verpacken
Ergebnis:
Java:
public int stupidMultiply(int x, int y){
int sum = 0;
for(int i = 0; i < y; i++){
sum+=x;
}
return sum;
}

Gruß
 

jwiesmann

Bekanntes Mitglied
Unter der Annahme das ich normalsterblich bin:

-Überlegen was man bei x*y macht, nämlich x y-mal zu sich selbst addieren.
-Für "y-mal machen" die for-schleife auspacken
-akkumulatorvariable für die summe einfügen
-das ganze in eine methode verpacken
Gruß

fast :)
... Addition, Subtraktion und Vergleich von Ganzzahlen darzustellen....

@Firephoenix, bei dir gibt es nur Addition und Vergleich...

@Seatdriver87
Wenn du dir deine Funktion mal anschaust und einfach Werte eingibst, kommst du sicherlich schnell auf die Lösung.
Nimm einfach mal 2*3 = 6;
-->
>> a = 2;
>> b = 3;

=== ERSTER LAUF
c = 0 +3 = 3;
a = 2 -1 = 1;
============== da a>0 nochmal, Also 2ter lauf
c = 3 + 3 = 6;
a = 1-1 = 0
--> c = 6
--> c = a*b

Im Prinzip heißt das
Rechne solange b+b bis ich x mal a-1 abgezogen habe und a=0 raus kommt...
Also ist es
0+3 = 3 (b beim ersten mal mit nix addieren)
2-1 = 1 (1 von a abziehen)

da a noch nicht 0 ist .. das Ganze nochmal
3+3 (da c nun 3 ist und ich einfach wieder b hinzufüge)
und 1-1 = 0....
 
Zuletzt bearbeitet:
F

Firephoenix

Gast
Offenbar bin ich bin nicht normalsterblich (ich schiebs mal auf die Uhrzeit).

Deine Rechenversion scheint auch die gesuchte zu sein, das hier würde aber sicherlich auch gehen oder :idea:

Java:
public int moreStupidMultiplyButWithAdditionalSubtractionFeatureIncluded(int x, int y){
int sum = 0;
for(int i = 0; i < y; i++){
sum+=x;
sum+=x;
sum-=x;
}
return sum;
}

[OT]Und so eine kreative Lösung zu der Uhrzeit ...[/OT]

Gruß
 
H

hüteüberhüte

Gast
Das ist ja voll easy ! Und ich sitz hier zehntausend Lichtjahre und es ist so einfach, ich könnt weinen :)

Lichtjahre ist eine Maßeinheit für Entfernungen...

4 Fälle beachten:
Java:
if (a < 0) {
  if (b < 0) {
    
  } else {
    
  }
} else if (b < 0) {
  
} else {
  
}
Und je nachdem a oder b hoch- oder runterzählen und evtl. das Vorzeichen wechseln

Und ich bin mir sicher, jeder hatte 3*3=3+3+3 in der Frundschule :)
 

Logaff

Bekanntes Mitglied
Theoretisch kannst du alle Funktionen dieser Welt mit folgenden Funktionen berechnen:
-2 Variablen Gleichsetzen
-Sprung zu irg einer Adresse
-Sprung zu einer Adresse bzgl != 2er Variablen
-Variable +1 rechnen
-Variable 0 setzen
-Programm beeenden

->Registermaschine

Daraus folgt das Subtraktion auf Addition zurückgeführt werden muss (macht glaub ich die ALU im CPU sowieso ?!) dementsprechend sind die Lösungen für die Grundrechenarten meist nicht zu schön ^^

Natürlich kann man den Grundbefehlssatz noch erweitern wobei jede Erweiterung durch diese Grundbefehle realisiert werden kann.
 
F

Firephoenix

Gast
:joke:

Firephoenix, laut deiner Methode gilt:
Code:
2 * (-3) = 0
Solange du das logisch rechtfertigen kannst, ist ja noch alles in Ordnung. :)

Kurz bevor man ins Bett geht noch Beiträge zu schreiben geht doch immer nach hinten los ;)

Hier mal eine Version die brauchbarer aussieht (dieses mal mit +, - und vergleich):
Java:
public static int multiply(int x, int y){
		if(x < 0){
			return - multiply(-x,y);
		}else if(y < 0){
			return - multiply(x,-y);
		}else{
			return multiplyRec(x,y);
		}
	}
	
	private static int multiplyRec(int x, int y) {
		if(x == 0){
			return 0;
		}else if( x == 1){
			return y;
		}else{
			return multiplyRec(--x,y)+y;
		}
	}

        public static void main(String args[]) {
		System.out.println(multiply(3, 4));
		System.out.println(multiply(4, 3));
		System.out.println(multiply(0, 5));
		System.out.println(multiply(4, 0));
		System.out.println(multiply(-5, 4));
		System.out.println(multiply(3, -4));
		System.out.println(multiply(-9, -1));
	}
Ausgabe:
Code:
12
12
0
0
-20
-12
9

Gruß
 

Logaff

Bekanntes Mitglied
Failing at Klugs******en^^

Ja natürlich du kannst alle BERECHENBAREN ZAHLENFUNKTION von N* -> N durch eine Registermaschine realisieren welche äquivalent ist zu der Turingmaschine und somit zu unseren normalen Computer.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Überlauf durch Multiplikation Java Basics - Anfänger-Themen 7
L Switch-Case Multiplikation wird nicht ausgegeben Java Basics - Anfänger-Themen 1
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
S Multiplikation von zwei Labels Java Basics - Anfänger-Themen 7
F Matrix Multiplikation Java Basics - Anfänger-Themen 3
G Java Bruchrechner Addition, Multiplikation... Java Basics - Anfänger-Themen 12
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
D Methoden Matrix Multiplikation Java Basics - Anfänger-Themen 27
J Funktionsaufrufe Multiplikation von Arrays Java Basics - Anfänger-Themen 3
Joker4632 Klassen BigDecimal Multiplikation liefert nicht erwarteten Wert Java Basics - Anfänger-Themen 6
TomatenBrot447 Adapter für eine optimierte Multiplikation Java Basics - Anfänger-Themen 5
U Ist diese Methode zur Matrix Vektor Multiplikation korrekt ? Java Basics - Anfänger-Themen 5
K Multiplikation zweier Matrizen Java Basics - Anfänger-Themen 23
P Variablen Negatives Ergebnis bei Multiplikation von großen Zahlen Java Basics - Anfänger-Themen 2
R Matrix-Vektor-Multiplikation Java Basics - Anfänger-Themen 13
K Seltsames Ergebnis in Netbeans bei einfacher Multiplikation Java Basics - Anfänger-Themen 5
T Operatoren Multiplikation nur mit Addition, Subtraktion und Vergleich Java Basics - Anfänger-Themen 29
V Vor jeder Multiplikation den linken Multiplikator abrunden Java Basics - Anfänger-Themen 4
M Matrix Matrix Multiplikation Java Basics - Anfänger-Themen 6
W Multiplikation mit rekursivem Aufruf Java Basics - Anfänger-Themen 17
S Multiplikation von großen Zahlen, ohne BigInt uä Java Basics - Anfänger-Themen 7
F.S.WhiTeY Multiplikation nach der Schulmethode Java Basics - Anfänger-Themen 6
K Matrizen Multiplikation Java Basics - Anfänger-Themen 3
B Multiplikation bei Generics Java Basics - Anfänger-Themen 9
G Multiplikation falsches Ergebnis Java Basics - Anfänger-Themen 5
K double Multiplikation Java Basics - Anfänger-Themen 2
K einfache Multiplikation Java Basics - Anfänger-Themen 6
2 Variablenüberlauf bei Addition, Multiplikation Java Basics - Anfänger-Themen 2
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
X wie bekomme ich durch Eingabeaufforderung definierte double in einen Befehl, welcher 3 erwartete double braucht? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
A 1 Leerzeichen durch zwei Leerzeichen ersetzen Java Basics - Anfänger-Themen 4
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
A JTextArea entfernen und durch neuen Text ersetzen Java Basics - Anfänger-Themen 8
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K mit <<1 kann man mal 2 machen, mit >>2 geteilt durch zwei und was bewirkt <<<1 und >>>1? Java Basics - Anfänger-Themen 5
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
C In String, Buchstaben ersetzen durch andere Buchstaben Java Basics - Anfänger-Themen 26
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
C if-Konstrukt durch switch-Konstrukt ersetzen Java Basics - Anfänger-Themen 14
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
E 2D Array - char durch die Matrix "wandern" lassen Java Basics - Anfänger-Themen 7
E Objekt durch Benutzer über Konsole erzeugen - Java Java Basics - Anfänger-Themen 3
F Methode für Teilbarkeit durch 5 tut was anderes.... Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
H Wie kann ich durch Methoden definiren? Java Basics - Anfänger-Themen 8
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
O Typparameter durch Wildcards verallgemeinern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
N Denksportaufgabe durch Algorithmus lösen Java Basics - Anfänger-Themen 2
H Array mit Zahlen die durch 3 und 5 teilbar sind erstellen Java Basics - Anfänger-Themen 13
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
W JLabel, Farbe durch Listener ändern Java Basics - Anfänger-Themen 6
T Extrahiertes Objekt durch Getter bekommen Java Basics - Anfänger-Themen 2
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
S For-Schleife durch "ESC" verlassen? Java Basics - Anfänger-Themen 2
C char in String suchen und durch anderen String ersetzen Java Basics - Anfänger-Themen 2
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
V Durch 0 teilen Java Basics - Anfänger-Themen 2
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben