Multiplikation ohne arithmetische operatoren



  • Hey Leute,
    ich studiere gerade e-technik im ersten trimester und habe das glück,die programmiersprache c zu lernen.
    bis jetzt kam ich ganz gut klar und habe auch schon die erste prüfung hinter mich gebracht.jetzt stehe ich aber mal vor einem prob,bei dem ich nicht weiterkomme.
    aufgabe wie folgt:
    soll ein c-programm schreiben, dass eine funktion int mult(int,int) enthält,das

    - als ergebnis das produkt beider zahlen ausgibt
    - folgenden nebenbedingungen genügt:
    - funktion darf nur die operatoren + und - (oder ++, -- ) enthalten
    - operatoren * und / sind verboten
    - alle anderen operatoren sind erlaubt
    - kein schleifenkonstrukt
    - keine andere funktion darf aus der funktion aufgerufen werden
    - funktion darf sich selbst aufrufen

    naja wer hat denn da mal ein paar tipps für mich?

    danke im voraus



  • MaikiMaik schrieb:

    - funktion darf sich selbst aufrufen

    Na damit kann man doch 'ne Schleife simulieren.

    Ansonsten: entweder russische Bauernmultiplikation oder einfach n-mal addieren.



  • hmmm irgendwie bringt mich das nicht weiter.wenn ich zwei zahlen vorgebe kein prob.aber wie realisir ich dass mit zwei mittels scanf eingelesenen zahlen?
    brauche ja irgendwie ein abbruchkriterium wenn ich die funktion immer wieder aufrufe...



  • Übergib der Funktion mult als Parameter die Faktoren a und b.
    Falls a oder b gleich 0 sind, gib 0 zurück.
    Falls a gleich 1, gib b zurück; falls b gleich 1, gib a zurück.
    Stelle sicher, dass a nicht negativ ist (ggf. a und b negieren).
    Drücke das Produkt als Summe b+b+...+b mit a Summanden aus.
    Berechne diese Summe rekursiv als b+mult(a-1, b).

    Das sollte langen. Kannst noch optimieren, indem du für a immer den betragsmäßig kleineren Faktor einsetzt.



  • darf ich dezent darauf hinweisen das dass hier die C**#** abteilung und nicht die C abteilung ist? Ich denke man wird dir dort besser helfen können als hier (auch wenn wir hier einige C coder haben)

    🙂



  • cde schrieb:

    Übergib der Funktion mult als Parameter die Faktoren a und b.
    Falls a oder b gleich 0 sind, gib 0 zurück.
    Falls a gleich 1, gib b zurück; falls b gleich 1, gib a zurück.
    Stelle sicher, dass a nicht negativ ist (ggf. a und b negieren).
    Drücke das Produkt als Summe b+b+...+b mit a Summanden aus.
    Berechne diese Summe rekursiv als b+mult(a-1, b).

    Das sollte langen. Kannst noch optimieren, indem du für a immer den betragsmäßig kleineren Faktor einsetzt.

    oki doki...das prog läuft.erstmal vielen vielen dank.nur steig ich hinter diese rekursive geschichte noch nich so ganz.werd die frage mal im C forum stellen (sorry,hatte das forum vorher nicht gesehen)...kannst ja vielleicht da mal reinschauen,wenn du mir das erklären magst. http://www.c-plusplus.net/forum/viewtopic-var-p-is-1808294.html#1808294 danke danke



  • MaikiMaik schrieb:

    nur steig ich hinter diese rekursive geschichte noch nich so ganz.

    evt. hilft die Google dabei ... http://www.google.de/#hl=de&q=rekursion


Anmelden zum Antworten