Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String lässt sich nict zusammensetzen und länge constant

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
24.03.2006, 19:16 Uhr
~Sascha-ow
Gast


Hallo,

ich habe eien Function geschrieben in der ein String zusammengesetz wird da irgendwie bekomme ich nur ein Smily vlt könnt ihr euch das mal angucken:
C/C++ Code:

C++:
string bin (int zahl)
{
         string hallo;
         char test;
while(zahl>0){      
  int rest;

  string ausgabe;
  rest = zahl % 2;
  zahl = zahl -rest;
  if (zahl!=0) zahl = zahl / 2;
  test<< rest;
  ausgabe = ausgabe + test;
// cout << rest;
  hallo = ausgabe;
}
return hallo;      
}


wenn ich das über eine normal cou ausgabe nacheinander in der gleichen Zeile einfach ausgeben lasse geht das ja. Und wie bekomme ich das hin das wenn der End string kürzer als 8 ist das er solange nullen vore ranstellt bis es echt stellen sind?



Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.03.2006, 02:01 Uhr
theosoft



... Ich denke du willst Dualzahlen darstellen.
ich habe nicht geschiftet, sondern maskiert.

C++:
...
string bin (int zahl)
{
  string hallo;
  char ausgabe[8] = "00000000";
  int rest;
  for(int i = 0; i <= 7; i++)
  {
    if((zahl & (int)pow(2, i)) == (int)pow(2, i)) ausgabe[-1*(i-7)] = '1';
    else ausgabe[-1*(i-7)] = '0';
  }
  hallo = ausgabe;
  return hallo;
}

int main() // --------- Hauptprogramm ---------------------
{
  cout << bin(255) << endl;
  ...
  return (0);
}

in der for-Schleife der Funktion werden 8 BIT bearbeitet,
am Beispiel des 4. Bits (B3) mit dem Wert 8 bedeutet das::
if((zahl & 8) == 8) ausgabe[3] = '1';

So richtig zufrieden bin aber ich nicht

... und die Golfer unter uns werden sich schieflachen
--
ifS (immer fröhliches Schaffen)
theosoft

Dieser Post wurde am 25.03.2006 um 02:08 Uhr von theosoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.03.2006, 16:35 Uhr
ref



hier kriegt man Feldgrenze ueberschritten error


C++:
char ausgabe[8] = "00000000";



besser ist ein extra platz für das abschliessen

char ausgabe[9] = "00000000";
--
Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.03.2006, 16:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ggf. so www.fun-soft.de/showtopic.php?threadid=11802
statt ausgeben halt in nen string schreiben...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.03.2006, 18:13 Uhr
theosoft



@ref: yep , thx

C++:
string bin(int zahl)
{
  char ausgabe[9] = "00000000";
  int rest;
  for(int i = 0; i <= 7; i++)
    if(  (zahl & (int)pow(2, i)) == (int)pow(2, i)) ausgabe[-1*(i-7)] = '1';
      else ausgabe[-1*(i-7)] = '0';
  return ausgabe;
}

... dann auch weg mit dem ursprünglichen "hallo"!
--
ifS (immer fröhliches Schaffen)
theosoft
 
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: