Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

11

02.12.2012, 16:16

okay, könntest du mir das bitte nochmal genauer erklären? Weil ich würde schon gerne verstehen wie das funktioniert, was ich da benutzte;):
Wandelt das jetzt den gesamten String in einen int um?
Wofür steht die 4?
Was macht die '0'?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

12

02.12.2012, 16:20

Ich sehe gerade, dass du ja std::string verwendest. In diesem Fall geht umwandeln so:

C-/C++-Quelltext

1
2
3
4
5
std::string str = "123";
std::stringstream ss;
ss << str;
int zahl;
ss >> zahl;

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

13

02.12.2012, 16:24

Ja, ich hatte vergessen das mit reinzuschreiben und habe es grad nochmal geändert.
Danke! Und dann greife ich auf die einzelnen Ziffern zu, wie du es schon geschrieben hast?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

14

02.12.2012, 16:25

Ich würde es wie BlueCobold machen. Es soll ja nur eine Übung sein und da kann ein normaler String entgegengenommen werden.

'0' ist ein synonym für den ascii Code für das Zeichen "0".
Hier findest du eine Tabelle: http://de.wikipedia.org/wiki/American_St…ion_Interchange

'0' steht also für 48. Gibt der User die Ziffer '7' ein, hat der char den Zahlenwert 55. Subtrahierst du wie BlueCobold, kommst du auf den richtigen Zahlenwert('7'-'0'=7 bzw. 55-48 = 7).
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

15

02.12.2012, 16:32

Ja, du könntest so auf die Ziffern zugreifen, wie ich das zuvor beschrieben habe.

Die Möglichkeit von BlueCobold ist für eine Ziffer sicher schneller umgesetzt, auch wenn ich sie unflexibler un fehleranfälliger finde.

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

16

02.12.2012, 16:38

Ich glaub, ich hab das jetzt so grob verstanden.
Aber wofür steht die 4? Muss man die einfach immer mitschreiben oder steht das für die Stelle im String?

Zitat

int x = deinString.at(4) - '0';

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

17

02.12.2012, 16:42

Für den 4. Index, sprich die 5. Position im String.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

02.12.2012, 16:43

Da hast du Recht. Wenn Binaerzahl nur ein char-Array ist, dann enthält jedes Element den ASCII-Code der jeweiligen Zahl. Mit diesen Werten möchtest du nicht rechnen. Ich würde dir empfehlen, deine komplette Binärzahl als Zahl (z.B. als Integer) zu speichern und mit den Schiebeoperatoren und dem bitweisen UND auf die einzelnen Binärziffern zuzugreifen.

Beispiel:

Quellcode

1
2
int zahl = 0b101110;
char zifferN = (zahl & (1 << N)) >> N;

Genau das GEHT nicht, deswegen ist sie doch auf String gewechselt. Die Zahlen, die sie benutzen will, sind zu groß für int.

Ich glaub, ich hab das jetzt so grob verstanden.
Aber wofür steht die 4? Muss man die einfach immer mitschreiben oder steht das für die Stelle im String?

Zitat

int x = deinString.at(4) - '0';

Die war nur ein Beispiel für die fünfte Ziffer von vorn.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

19

02.12.2012, 16:45

Jetzt hab ich es verstanden, Danke!
...Mal gucken mit welcher Methode ich besser klar komme.

Edit: anscheinend brauch ich mich nicht mehr entscheiden, weil eine Möglichkeit sich soeben von selbst verabschiedet hat

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

20

02.12.2012, 16:51

Da hast du Recht. Wenn Binaerzahl nur ein char-Array ist, dann enthält jedes Element den ASCII-Code der jeweiligen Zahl. Mit diesen Werten möchtest du nicht rechnen. Ich würde dir empfehlen, deine komplette Binärzahl als Zahl (z.B. als Integer) zu speichern und mit den Schiebeoperatoren und dem bitweisen UND auf die einzelnen Binärziffern zuzugreifen.

Beispiel:

Quellcode

1
2
int zahl = 0b101110;
char zifferN = (zahl & (1 << N)) >> N;


Genau das GEHT nicht, deswegen ist sie doch auf String gewechselt. Die Zahlen, die sie benutzen will, sind zu groß für int.



Dann müsste man eben immer je 32 Stellen aus dem String in einen Integer auslesen und getrennt verarbeiten... Naja egal, es läuft beides auf dasselbe raus. Erst, wenn du sagst, was du nun mit den Ziffern machen willst, kann man die beste Vorgehensweise wählen.

Werbeanzeige