Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Schleife geht net

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 ]
000
12.10.2007, 15:25 Uhr
~Animal21
Gast


hio

ich versuch grad nen "umrechner" schreiben, der dezimal zahlen in binäre umwandelt

muss dazu sagen, ich bin in c++ echt neu un kenn mich nur mit den allgemeinheiten im programmieren aus (schleifen, auswahlstruckturen ect...) aber halt net c++-speziefisch

hier mein prog un das problem:


C++:
switch (ui_Antwort_Zahlsys)
            {

            case 1:
                cin>>i_deziZahl;
                cout<<"test"<<endl;  //wird durchlaufen

                while (i_deziZahl != 0);
                {
                    i_Icount++;
                    array[i_Icount] = i_deziZahl % 2;
                    i_deziZahl /=2;
                    cout<<i_deziZahl<<endl;
                }
                cout<<"test2"<<endl; //wird nicht durchlaufen

                    int o;
                    for (o=1;o<sizeof(array);o++)
                    {
                        cout<<array[o]<<endl; //soll die ausgabe der nullen und einsen sein
                    }

            break;



das geht i-wie net, is sicher n dummer fehler oder so, aber ich erblick den i-wie nicht

PS: schön wärs noch, wenn die nullen und eines immer in 8. blöcken ausgegeben werden, bzw wenns zb 11 ziffern sin, dass 2 8. blöcke angezeigt werden, und die restlichen mit nullen gefüllt wreden
<-- wär cool mir einer nen denkanstoß dazu geben könnte wie das geht

mfg
ani

Dieser Post wurde am 12.10.2007 um 21:30 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.10.2007, 17:54 Uhr
Th



Mit einem Debugger wäre dir das sofort aufgefallen...
Du hast eine Endlosschleife, entferne mal das Semikolon hinter der while-Schleife!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.10.2007, 20:55 Uhr
RedEagle



Zu den 8-Bit blöcken

C++:
//...
int i=0; //oder, wenn i_Icount hier == 0 ist, i_Icount verwenden
while (i_deziZahl != 0)
{
i_Icount++;
i++;
array[i_Icount] = i_deziZahl % 2;
i_deziZahl /=2;
cout<<i_deziZahl;
if((i %  8) == 0) cout << ' ';
}
cout << endl;
//...


wenn du alle 32-Bit durchgehen möchtest:
(mit der while-schleife tauschen)

C++:
for(short bit=0; bit<32; bit++)

--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.10.2007, 06:29 Uhr
~Animal21
Gast


danke, aber wenn ich "nur" das silikolon wegmach, dann kommen bei der ausgabe gaaaaaaaaaaaaaaaaaanz viel viele zeilen mit nonsens zahlen und nach n paar sekunden (in der zeit rasen die nonsens-zeiln nur so runter) kommen viele nullen, auch immer weielweise

i-wann is dann schluss un das wars

mfg
ani
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.10.2007, 09:14 Uhr
RedEagle



Liegt daran, dass du nach jeder Zahl eine neue Zeile anfängst.
Da du 32Bit hast (= 32 zahlen) beschreibst du 32 Zeilen. Die windowskonsole hat aber idr nur 25 Zeilen.

Nimm hinter dem cout das "<< endl" raus.
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.10.2007, 15:59 Uhr
~Animal21
Gast



Code:
||CPP||
C++:
    switch (ui_Antwort_Zahlsys)
            {

            case 1:
                cin>>i_deziZahl;
                cout<<"test"<<endl;  //wird durchlaufen

                while (i_deziZahl != 0)
                {
                    i_Icount++;
                    array[i_Icount] = i_deziZahl % 2;
                    i_deziZahl /=2;
                    cout<<i_deziZahl;
                }
                cout<<"test2"; //wird nicht durchlaufen

                    int o;
                    for (o=1;o<sizeof(array);o++)
                    {
                        cout<<array[o];
                    }

            break;

|

hmm,
ich hab alle "<<endl" 's mal rausgemacht, aber da kommt folgendes:

am ende dann so
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.10.2007, 16:14 Uhr
0xdeadbeef
Gott
(Operator)


ICount uninitialisiert benutzt, wie lang ist array? Mit dem bisschen Code ist es nicht möglich zu sagen, was schief geht. Zeig mal das ganze Programm her.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.10.2007, 16:29 Uhr
~Animal21
Gast


naja, hab das array 9999 lang gemacht, um die möglichkeit auszuschliesn, dass ich bei ner großen zahl kein ergebnis bekomm

bzw, es soll ma mit:

int o;
for (o=1;o<sizeof(array);o++)
{
cout<<array[o];
}

nur die ausgeben, die auch wirklich gefüllt sin


wie kann ich hier was in anhang machen?

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.10.2007, 17:13 Uhr
RedEagle




C++:
cout<<i_deziZahl;

gibt die ganze zahl aus, dur willst aber nur das 1. Bit.
Deshlab:

C++:
cout<<i_deziZahl & 1;


sizeof(array) gibt die größe des arrays an, nicht wie viel elemente davon beschrieben sind.

C++:
for (o=1;o<sizeof(array) && array[o]!=0;o++)

Gibt alle elemente aus, bis ein element 0 ist.

---

zum forum:

1. Anhänge sind nich möglich
2. cpp-code-tag: [cpp] zum schließen / vor das cpp
--
MFG RedEagle

Dieser Post wurde am 14.10.2007 um 17:14 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.10.2007, 17:16 Uhr
0xdeadbeef
Gott
(Operator)



C++:
for(o = 0; o <= i_Icount; ++o) {
  std::cout << array[o];
}



Übrigens, sizeof(array) gibt die Größe des Arrays in byte an. Wenn es sich hier um ein int-Array handelt, ist das auf x86 vier mal die Anzahl der Einträge im Array. Ist eigentlich ein Wunder, dass dir das keine Segmentation faults gibt - wenn überhaupt sowas, dann sizeof(array) / sizeof(*array), und versuch das bloß nicht mit Zeigern. Generell ist es in C++ sinnvoller, gleich std::vector zu benutzen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 14.10.2007 um 17:19 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ C / C++ (WinAPI, Konsole) ]  


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: