Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

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

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
07.06.2004, 19:01 Uhr
chrisuni



Habe mich im Internet durchgesucht und weiß auch was die Oktaldarstellung ist und wie ich sie auf einem Blatt Papier berrechne. Nur bei dem Umsetzen des Programms hab ich keine idee... hat jmd zufällig den code für die Berechnung?

Schreiben Sie ein Programm zur Berechnung der Oktaldarstellung einer natürlichen Zahl.
--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.06.2004, 20:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


immer drei bit zusammenfassen... also erst die zahl modulo 8 (oder &7)... für die letzte stelle... dann um 3 stellen shiften(oder durch 8 teilen)... usw... bis 0 übrig bleibt...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.06.2004, 20:35 Uhr
chrisuni



Sry, verstehe das nicht... ist bestimmt vollkommener Unsinn was ich hier gemacht habe.. hast Du noch nen besseren Tip für mich ^^ ?


C++:
#include <iostream>
#include <conio.h>
using namespace std;

void drucke_oct(unsigned char v);

int main()
{
char s[256];
int a =255;

drucke_oct(a);

getch();
return 0;
}

void drucke_oct (unsigned char v)
{
while (v % 8 != 0)
v >>= 3;
for (int i=7;i>=0;i--)
{printf("%d",v);}
}


--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.06.2004, 20:38 Uhr
virtual
Sexiest Bit alive
(Operator)


void drucke_oct(unsigned c)
{
printf("%o\n", c);
}
--
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
07.06.2004, 20:41 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ungetestet so ins forum gehackt

C++:
void drucke_oct(unsigned char v){if(v)drucke_oct(v>>3);printf("%d",v&7);}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.06.2004, 20:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@virtual
verdammt oktal gibts auch schon fertig...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.06.2004, 21:45 Uhr
Pablo
Supertux
(Operator)


@chrisuni: Im Prinzip ist dasselbe, nur mit der Basis 8.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.06.2004, 23:35 Uhr
chrisuni



Hab mir das nochmal angeschaut und so langsam verstehe ich das Prinzip ...

Aber ich habe nochmal eine ganz doofe simple Verständnissfrage:


C++:
if(v)
{drucke_oct(v>>3);} // rekursiv verstehe ich auch
printf("%d",v&7);}    // was bewirkt nochmal v&7
                            // oder was ergibt 5&7, ist das: 0101 + 0111




Ich verstehe das mit dem if nicht...
bisher hab ich immer Aufgaben gehabt:
Wenn x > 5....{dann passiert dies} else {dann passiert das}...

Wenn dort jetzt steht:
Wenn v {dann passiert dies} // (wie in der Aufgabe),
was passiert denn hier genau, heißt das einfach nur Wenn v irgendeine Zahl ist außer 0 dann.....
und wenn ja, was passiert denn dann wenn v = 0 wäre, hier gibt es ja kein else.

Und dazu gleich gefragt wenn ich folgenden Code habe:

C++:
...
if (x>5)
{ y = 6;}
y = 4;
...



bewirkt das für !diese Beispiel! hier das gleiche wie:

C++:
...
if (x>5)
{y=6;}
else
{y=4;}


--
gruß chris

nehmts mir net übel ich bin nen Anfänger und seh manchmal den Wald vor lauter Bäumen nicht mehr ;)

Dieser Post wurde am 07.06.2004 um 23:36 Uhr von chrisuni editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.06.2004, 23:50 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das & heisst einfach nur bitweises verunden...

1101 &
1010 =
1000

jedes einzelne bit wird mit jedem dem anderen gleichwertigen bit verundet... das heisst im ergebnis bleibt nur ne 1 stehen wenn bei beiden stellen ne 1 steht... ist also eine art filter... wenn ich eine zahl mit 1011 verunde mach ich also nix anderes als zu fragen hat die zahl mit der ich verunde an stelle 4 2 und 1 eine 1 zu stehen?...

so wenn ich jetzt &7 verwende ist das wie wenn ich binär mit 0111 verunde also nur die letzten 3 stellen nehme alles andere wird weggefiltert....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.06.2004, 00:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ach so hab deine ifs ganz übersehen...

nein ist nicht das gleiche... das else wird nur ausgeführt wenn die bedingung die du im ifzweig anführst nicht true ist... bei deinem zweiten beispiel gibt es keinen elsezweig... es wird nur geschaut ob x>5 ist und dann ggf auf 6 gesetzt...

danach wird y immer auf 4 gesetzt was dann in diesem fall kein sinn macht den wert vorher auf 6 zu setzen
--
...fleißig wie zwei Weißbrote
 
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: