Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Anfängerfrage zu Arrays

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
11.11.2008, 16:25 Uhr
lustigerlurch



Hallo ich bin neu hier im Forum,

schreibe gerade an einem programm das dezimal in binärzahlen umrechnen kann, doch leider läuft was schief ich weiss aber nicht wie es sonst geht.

int i=0;
int j=0;
unsigned long int x;
unsigned long int y[100];

while(x>0)
{

y[i]=(x%2); //Rest ermitteln
x=(x/2); //x teilen
i++; //Änderung der Array stelle

printf("x: %lu\n",x);
}

Dazu noch die Ausgabe:

for ( j=0; j<sizeof(y); j++ )
{
printf("%lu", y[j]);
}

Mir ist klar das man das Array für korrekte Binärzahl rückwärts ausgeben muss, soweit bin ich aber noch nicht, erstmals würde mich eine korrekte ausgabe freuen.
x teilt er korrekt.

gruß lustiger lurch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.11.2008, 22:53 Uhr
Hans
Library Walker
(Operator)


Hi,

Du solltest das array y vor dem ersten Gebrauch initialisieren, d.h. mit Nullen vollschreiben. Sonst hast Du da irgendwas drin, und printf gibt dem entsprechend Unfug aus.
Für die Ausgabe denk mal drüber nach, was es bedeutet, "eine Schleife rückwärts laufen zu lassen", im Zusammenhang mit dem "rückwärts ausgeben".
Ach so, und der Formatstring "%lu" ist falsch. Da interpretiert er jedes Element des Arrays als unsinged long int, und gibt es dem entsprechend aus. D.h. Du bekommst jedes Bit als vorzeichenlose 32- oder 64-Bit-Zahl geliefert. Besser wäre vermutlich "%0d"; - das ist eine Null vor dem "d".

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
002
12.11.2008, 13:25 Uhr
lustigerlurch



danke schon mal hans
habe versucht y mit

for(int k=0;k<sizeof(y);k++)
{
y[k]=0;
}

zu intialisieren, das programm stürzt aber einfach ab.
was ist falsch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.11.2008, 13:48 Uhr
masterklen



versuchs einfach mal mit

C++:
int y[100] = {0};



mfg masterklen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.11.2008, 14:21 Uhr
0xdeadbeef
Gott
(Operator)


sizeof(y) ist sizeof(unsigned long) * 100, nicht 100.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: