Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

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

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 ]
000
29.11.2007, 17:17 Uhr
~Chrysler
Gast


Irgendwie häng ich ein wenig was die Binomialrechnung in C++ angeht...

Ich kapier zwar, dass es die Operatoren gibt, die eine Umstrukturierung der Zahl führen (also eigentlich der Binomialzahl)... wie z.B. ^, &, |, << ...

aber, wie kann ich von einer eingelesenen Zahl (Beispiel Zahl: 8) die Binomialdarstellung ausgegeben bekommen?

oder z.B. rausfinden wie wieviele 0 und 1 die Zahl in der Binomialdarstellung hat, dazu reichen doch nicht immer nur die oben erwähnten Operatoren, oder etwa doch?

Bitte um Aufklärung, irgendwie befürchte ich hänge ich einfach bei meinem Gedankengang, bräuchte also nen Gedankenanstoss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.11.2007, 18:00 Uhr
Kest
saint


Hi!


C++:
#include <iostream>

int main()
{
    int zahl=34;
    
    for(int i=(sizeof(zahl)*8)-1; i>=0; --i)
            std::cout << ((zahl>>i)&1);
}

--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.11.2007, 18:56 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <iostream>
#include <iomanip>

int main() {
  int zahl = 8;

  std::cout << std::setbase(2) << zahl << std::endl;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.11.2007, 19:14 Uhr
Kest
saint


Das war wohl wieder ein Witz, oder doch nicht? ^^
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.11.2007, 19:20 Uhr
0xdeadbeef
Gott
(Operator)


Bitte, wie? std::setbase gibts durchaus. Ich find das ziemlich praktisch, aber eigentlich nicht besonders lustig.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.11.2007, 19:37 Uhr
~Chrysler
Gast



Zitat von Kest:
Hi!


C++:
#include <iostream>

int main()
{
    int zahl=34;
    
    for(int i=(sizeof(zahl)*8)-1; i>=0; --i)
            std::cout << ((zahl>>i)&1);
}


funktioniert spitzenmäßig! danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.11.2007, 19:40 Uhr
Kest
saint


Ach was, echt? Seit wann denn?
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.11.2007, 19:48 Uhr
~Chrysler
Gast



Zitat von 0xdeadbeef:

C++:
#include <iostream>
#include <iomanip>

int main() {
  int zahl = 8;

  std::cout << std::setbase(2) << zahl << std::endl;
}



des funktioniert leider net, trotzdem danke für die mühe!

habe mich auch umgesehen nach diesem setbase, hab bisher nur gefunden dass es für octal, dezimal und hexadezimal funktioniert (8,10,16)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.11.2007, 20:09 Uhr
0xdeadbeef
Gott
(Operator)



Zitat von Kest:
Ach was, echt? Seit wann denn?

Seit der Standardisierung von C++ im Jahr 1998. Nachzulesen im C++-Standard Sektion 27.6.3.5 (Seite 654).

@Chrysler: Wenn dein Compiler das nicht frisst, solltest du ein Update in Erwägung ziehen. Das muss ein ziemlich alter Compiler sein.


Nachtrag: Grad nochmal genauer hingekuckt, der Standard gibt das tatsächlich nur für 8, 10 und 16 vor. Seltsam, mein gcc frisst das so. Naja, man lernt nie aus.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 29.11.2007 um 20:19 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.11.2007, 21:14 Uhr
Hans
Library Walker
(Operator)


Hi,

hab den Vorschlag von Beefy gerade mal mit meinem Uralt Borland C++ 5.5 getestet. Habe erwartet, das er setbase() gar nicht annimmt. Das hat er aber doch getan:


C++:
#include <iostream.h>
#include <iomanip.h>

int main()
{
  int zahl = 92;

  std::cout << "base:  2; Zahl = " << std::setbase(2) << zahl << std::endl;
  std::cout << "base:  8; Zahl = " << std::setbase(8) << zahl << std::endl;
  std::cout << "base: 10; Zahl = " << std::setbase(10) << zahl << std::endl;
  std::cout << "base: 16; Zahl = " << std::setbase(16) << zahl << std::endl;
}


Ob die Ausgabe für setbase(2) Standardkonform ist, weis ich nicht, aber der Rest scheint zu stimmen...

Code:
base:  2; Zahl = 92
base:  8; Zahl = 134
base: 10; Zahl = 92
base: 16; Zahl = 5c



Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: