Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Halbieren

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 <
000
25.11.2003, 11:18 Uhr
~joe
Gast


Schönen Tag.

Gibt es eigentlich eine Möglichkeit, Zahlen zu halbieren, ohne die Division oder die Multiplikation anzuwenden? (/,/=,*,*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.11.2003, 11:24 Uhr
~joe
Gast


Ich soll die Einser einer Zahl n in der Binärdarstellung addieren, darf aber keine Multiplikation oder Division anwenden. mein Bsp, welches leider dividiert:

C++:
#include<iostream.h>

int count(int n) {

int rest,z;

do {
rest=n % 2;
n=n/2;

if (rest!=0)
  z=z+1;
} while(n!=0);

cout << z; }



int main() {

int x;
cin >> x;
count(x);
return 0;
}




Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 25.11.2003 um 21:38 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.11.2003, 11:24 Uhr
~Karas
Gast


Wie willst du denn mit Multiplikation eine Zahl halbieren????

Soweit ich weiss gibt es da den Modulo (%):
6%2=0

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.11.2003, 11:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Nimm >>:


C++:
n >>= 1; // Identisch mit n /= 2 oder n = n/2


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.11.2003, 11:52 Uhr
geissbock



@karas

in mathe nicht aufgepasst? 2 * 0,5 = 1!!! oder hab ich mich jetzt verrechnet???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.11.2003, 12:01 Uhr
virtual
Sexiest Bit alive
(Operator)



Hm, sdollte auch >> nicht erlaubt sein, hilft eigentlich nur sowas:

C++:
int half_of(int n)
{
    int h = 0;

    if (n<0) return -half_of(-n);

    while (h+h != n && h+h != n-1)
    {
        ++h;
    }

    return h;
}



Bring Deinem Lehrer doch mal bei, sinnvolle Aufgaben zu stellen.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.11.2003, 13:16 Uhr
~joe
Gast


Herzlichen Dank fuer diese Loesungen, nur weiss ich leider nicht was n >>=1 bedeutet. Ist doch sicher eine Kurzschreibweise so wie ++h oder n+=z, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
25.11.2003, 13:30 Uhr
virtual
Sexiest Bit alive
(Operator)



C++:
n >>= 1;


Ist

C++:
n = n >> 1;


Was soviel bedeutet wie: "erschiebe alle Bits in n um eine Stelle nach rechts", was einer division durch 2 gleichkommt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
25.11.2003, 13:37 Uhr
geissbock



mal ein bespiel:

n = 4 also binär: 0100
wenn jetzt gegeben ist n >>= 1 ( n = n >> 1 )

also wird 0100 um eine stelle nach rechts geschoben.
ergebnis: 0010
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: