zahlen aus char in int variable schreiben

Cristok

Grünschnabel
Naja nu hab ich das nächste problem.
bin schon etwas weiter gekommen aber nu häng ich wieder.

Also
ich hab ne eingegebene zahl in ner char variable z.b.: 21.59
wie kriege ich es hin die 21 in eine int variable zu schreiben und die 59 in eine andere?

Hab schon meine bücher gewälzt aber irgendwie nix dazu gefunden.

Cristok
 
1. Wenn man jeweils nur den Anfangsbuchstaben einer Zeile groß schreibt, dann hat man damit die Netiquette nicht beachtet...

2. Als erstes solltest du aus dem char 2 chars machen, indem du die Zahlen bis zum Punkt in ein char kopierst, und den anderen Teil in ein anderes char.

Dann nimmst du den 1. char, und benutzt die Funktion atoi(char...) die gibt dir dann einen integer zurück. Das selbe machste dann mit dem 2. char und du bist fertig.

3. Bei Fragen, fragen ;)
 
Also wie ich den ersten Teil (21) in ne andere char kopiere weiss ich.
Aber wie genau mach ich das mit dem Rest hinter dem Punkt?

Cristok
 
Hy!

Was hältst du von der Idee deine Zahl zuerst in einen int zu kopieren, so fallen die Nachkommastellen weg, welche du dann aus Ursprungszahl-Vorkommastellen bekommst. z.B.
Code:
float cZahl = 3.44;
int iVorkomma = (int)cZahl;
float fNachkomma = cZahl - iVorkomma;

mfg
uhu01
 
uhu01 hat gesagt.:
Hy!

Was hältst du von der Idee deine Zahl zuerst in einen int zu kopieren, so fallen die Nachkommastellen weg, welche du dann aus Ursprungszahl-Vorkommastellen bekommst. z.B.
Code:
float cZahl = 3.44;
int iVorkomma = (int)cZahl;
float fNachkomma = cZahl - iVorkomma;

mfg
uhu01

Kannste auch machen, dann musste nur vorher den char mit atof() in ein float konvertieren, das geht auch...
Nur jenachdem ob du den Nachkomma Wert brauchst oder nicht, musste den mit der länge * 10 multiplizieren, und dann von float auch nach int konvertieren...

Und dann stellt sich mir die Frage was nun schneller ist...
 
Hi
Also das mit dem Float geht nicht weil, es gibt ja auch dumme User die anstatt 21.59 (also statt dem Punkt) nen Doppelpunkt oder ein anderes nicht numerisches Zeichen eingeben, somit ist es ja kein Float mehr, das soll auch gehen.
Also muss ich irgendwie die Lösung von MFC openGL benutzen, aber wie krieg ich die Zahlen hinter dem Zeichen in eine char rein?
 
Machs doch einfach nach der ganz alten Schule: ;-)

Code:
	char cZeit[]="21.59\0";
	int iH=0, iMin=0, iIndex=0;
	do {
		iH=iH*10+(int)cZeit[iIndex]-48;
		iIndex++;
	} while (cZeit[iIndex]>=48 && cZeit[iIndex]<=57);
	iIndex++;	
	do {
		iMin=iMin*10 + ((int)cZeit[iIndex])-48;
		iIndex++;
	} while (cZeit[iIndex]>=48 && cZeit[iIndex]<=57);

ciao thomas
 
moin


Wie wäre es hiermit:
Code:
char szZahl[10] = {"123.456");
float zahl = 0;

//sicherstellen das durch ein Punkt getrennt wird
for(int i=0; i<strlen(szZahl); i++)
    if(!(szZahl[i] >= '0' && szZahl[i] <= '9'))
        szZahl[i] = '.';

zahl = atof(szZahl);


mfg
umbrasaxum
 
Hallo,

Code:
#include <iostream>

using namespace std;

int main(){
        char floatingpoint[] = "1234.23";
        int a = atoi(strtok(floatingpoint, ",."));
        int b = atoi(strtok(NULL, ",."));
        cout << "Vor dem Komma: " << a << " Nach dem Komma: " << b << endl;
}

Geht mit , und .

Gruß

RedWing
 
Nee das geht irgendwie alles nicht.
Wie gesagt statt dem Punkt kann auch jedes andere nicht numerische Zeichen hin und es soll trotzdem richtig erkannt werden.

Also man soll auch 21b54 schreiben können und es soll die 21 in einer int Variablen abgelegt werden und die 54 in der anderen int Variable.

Ein Kollege meinte das nicht numerische Zeichen kann man schon bei der Eingabe abfangen, nur wie?

Er meinte irgendwie was mit get() aber als ich das gelesen hatte war er schon wieder weg :-(

Cristok
 
Zurück