Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Multiplizieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ]
010
02.04.2004, 14:54 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
31 Zeichen - wenns funktioniert

C++:
return (n<<1)*(f/2)+(f%2?n:0);



mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
02.04.2004, 14:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@mike
das zählt natürlich nicht...
du willst hier also bescheissen...
es ist definitiv keine multiplikation und auch keine division erlaubt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
02.04.2004, 15:21 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Dann ist dein Tipp:

5*(8 + 2 + 1)

auch nicht erlaubt ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
02.04.2004, 15:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@FloSoft
Ich habe nicht gesagt das du den Tip 1:1 umsetzen sollst aber er geht schon mal in die von mir gedachte richtung... Im übrigen hab ich glaub ich nicht ausgeschlossen das ich in tips den multiplikationsoperator nicht verwenden darf...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
02.04.2004, 15:53 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat:
Windalf postete
naja du kannst es zwar mit assembler machen dann doch aber bitte nicht so ne armselige mutliplikation verwenden...
also mutliplikation mit multiplikation zu lösen war ja nicht gerade sinn der aufgabe.. du solltest es ja gerade ohne multiplizieren (bzw. durch den kehrwert teilen machen)

Aber dann müsste ich mich ja in Assembler auskennen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
02.04.2004, 16:03 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Aber dann müsste ich mich ja in Assembler auskennen


Diese Problem teilen wir beide miteinander... wobei ich glaub man bekommts auch irgendwie in assembler hin wenn man viel zu viel langeweile hat
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 02.04.2004 um 16:04 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
02.04.2004, 16:28 Uhr
Jarling



wage Vermutung ...

ich schätze, du teilst die Faktoren in ... (weniger als 1+log2(f) des Faktors) Teile auf, wahrscheinlich ungleiche - logisch. Jedes teil ist dann auch wieder kleiner als "1+log2(f)" des Faktors, somit kann dann davon auch jeweils eine Schleife abgearbeitet werden (innere und äußere Schleife) -> die einzelnen Teile werden dann in einem Array abgelegt.

Hab jetzt leider keine Zeit, das auszuprobieren...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
02.04.2004, 16:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ok ich geb mal noch ein tip

also 10*11 = 10* (8+2+1) alles zweierpotenzen
wenn man eine zahl im dezimalsystem mit 10 multipliziert ist das das gleiche wie wenn man sie um eine stelle nach links schiebt..
wenn ich im binärssystem...

ach so ganz vergessen... nein ich nehm nur eine schleife...
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 02.04.2004 um 16:40 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
02.04.2004, 16:53 Uhr
(un)wissender
Niveauwart


Gib doch nicht soviel Tipps!


C++:
int multiply(int n, int f)
{
    bool neg = false;
    if(n < 0)
    {
        neg = !neg;
        n = -n;
    }
    if(f < 0)
    {
        neg = !neg;
        f = -f;
    }
        
    int erg = 0;
    int mask = f;
    while(mask > 0)
    {          
        if((f & mask) + (mask >> 1) >= mask)
        {      
            erg <<= 1;
            erg += n;                              
        }  
        else
        {
            erg <<= 1;      
        }        
        mask >>= 1;
    }
    return neg ? -erg : erg;
}



Bearbeitung:

Jetzt auch mit negativen Zahlen!


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 02.04.2004 um 17:00 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
02.04.2004, 16:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Gib doch nicht soviel Tipps!


Naja einige scheinen ja damit probleme zu haben und die will ich ja nciht vom rätsel ausschliessen

Jo ist nicht schlecht aber golf mir das mal... das sind ja viel zu viele zeichen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ] [ 5 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: