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

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

1

26.03.2009, 13:50

Bestimmte Stelle einer int Zahl ausgeben [C++]

Hallo, ich habe eine Frage.
Mich würde interessieren ob es in C++ vielleicht soetwas wie eine vordefinierte Funktion gibt mit welcher ich den Wert einer bestimmten Stelle einer int Zahl ausgeben kann.

Ziel ist folgendes:
o Ich habe beispielsweise die int Variable mit dem Wert 20789
o In eine andere int Variable soll nun der Wert aus der dritten Stelle übertragen werden, also 7.

Ich habe mir natürlich schon Gedanken gemacht wie man so eine Funktion selber entwickeln könnte, wenn es aber soetwas schon gibt kann ich mir diese Arbeit aber ja vielleicht sparen :)
Es muss übrigens nicht zwangsweise int sein, ich kann auch mit den Nachkommastellen von float oder so arbeiten.
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

2

26.03.2009, 13:56

Bei int würde ich mit dem Rest einer Division arbeiten.

20789 % 10 = 9
20789 % 100 = 89
20789 % 1000 = 789
20789 % 10000 = 789
20789 % 100000 = 20789

Gruß
Markus

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

26.03.2009, 14:10

Alternativ mit strings oder stringstreams. der Fantasie sind keine Grenzen gesetzt :)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

4

26.03.2009, 14:45

Zitat von »"Nox"«

Alternativ mit strings oder stringstreams


Ich behaupte wenn die Daten im Int Format kommen is mein Vorschlag schneller ;) :P

Gruß
Markus

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

26.03.2009, 15:21

davon kann man ausgehen. Ist halt die Frage worauf es ankommt. Geht es um Geschwindigkeit, Lerneffekt, Schönheit? Natürlich ist sowas schnell mal hinzuschreiben:

C-/C++-Quelltext

1
2
3
4
5
int zahl = 25434;
int stelle = pow(10, 3);
int ersatz = 6;
zahl -= ((zahl / stelle) % 10) * stelle; //hiermit setzen wir die stelle auf 0.

zahl += stelle * ersatz; //hiermit fügen wir sie wieder ein

kA ob es wirklich funktioniert, aber sollte. Garantiert kommt gleich ein bithacker und zeigt uns wie es viel schneller mit bit/shiftoperatoren geht :D .
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Toxic

Frischling

  • »Toxic« ist der Autor dieses Themas

Beiträge: 53

Wohnort: Niedersachsen

Beruf: Ingenieur

  • Private Nachricht senden

6

26.03.2009, 15:53

Vielen Dank für die Antworten.
Also der letzte Quellcode funktioniert bei mir irgendwie nicht, habe natürlich <math.h> eingebunden. Aber ich bekomme folgende Fehlermeldung.

error C2668: 'pow': Mehrdeutiger Aufruf einer überladenen Funktion
kann 'long double pow(long double,int)' sein
oder "float pow(float,int)"
oder "double pow(double,int)"


Ich denke ich werde versuchen die Zahl in eine String Zeichenkette umzuwandeln und dann den Wert rauslesen. Dafür wird es wohl nötig sein mich ein bisschen in das ganze reinzulesen. Wenn ich dann soweit bin poste ich hier aber wie ich es gemacht habe :D
Wenn Architekten ihre Häuser so bauen würden wie Programmierer ihre Programme, könnte ein einziger Specht ganze Städte zerstören !

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

26.03.2009, 15:55

Zitat von »"Nox"«

Garantiert kommt gleich ein bithacker und zeigt uns wie es viel schneller mit bit/shiftoperatoren geht :D .


denke nicht dass das schneller geht da nunmal binär gespeichert wird, da ist das mit mod schon ganz neckisch^^.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

8

26.03.2009, 17:25

Ich bin mir nicht sicher, ob es schneller gehen kann oder nicht. Eine Division ist ja schon relativ langsam, wie ist das beim modulo-operator, ist der schneller/langsamer/gleich langsam? Wenn er genau so langsam ist, könnte man das Möglicherweise mit Bitmasken und solchen Tricks schon schneller machen (kenne mich da leider zu wenig aus^^). Aber ob sich der Aufwand lohnt... kA :D

9

26.03.2009, 18:03

Zitat

Eine Division ist ja schon relativ langsam, wie ist das beim modulo-operator, ist der schneller/langsamer/gleich langsam?

Ich denke mal, die sind gleich schnell (langsam), schließlich würde ich, um den Rest einer Division herauszubekommen, dividieren ;)

Aber ich glaube nicht, dass das etwas ist, das man sehr oft benötigt, also wirds ziemlich egal sein, ob es nun ein wenig schneller oder langsamer ist. Muss Toxic dann für sich entscheiden.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

10

26.03.2009, 19:45

Toxic du musst ihm einfach sagen welche funktion er nutzen soll. powf könnte helfen. Alternativ pow(10.0f, 3);
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige