[c]double zahl?

moin


Du hast da ne Menge unsinn eingebaut.... ;)
Code:
#include <stdio.h>
#include <conio.h>

double eingabe_double();


int main(void){
	double cool;

	printf("Bitte zahl eingeben: ");
	cool = eingabe_double();
	printf("\n Die Zahl war : %lf",cool);
	getch();
}


double eingabe_double()
{
	char eingabe[20];
	char temp;
	int index = 0;

	while((temp = getch()) != 13)
	{
		if(temp == ',')
			temp = '.';


		printf("%c", temp);

		eingabe[index++] = temp;
		eingabe[index] = '\0';
	}

	return atof(eingabe);
}
So gehts.


mfg
umbrasaxum
 
Tobias K. hat gesagt.:
moin


Du hast da ne Menge unsinn eingebaut.... ;)
Code:
#include <stdio.h>
#include <conio.h>

double eingabe_double();


int main(void){
	double cool;

	printf("Bitte zahl eingeben: ");
	cool = eingabe_double();
	printf("\n Die Zahl war : %lf",cool);
	getch();
}


double eingabe_double()
{
	char eingabe[20];
	char temp;
	int index = 0;

	while((temp = getch()) != 13)
	{
		if(temp == ',')
			temp = '.';


		printf("%c", temp);

		eingabe[index++] = temp;
		eingabe[index] = '\0';
	}

	return atof(eingabe);
}
So gehts.


mfg
umbrasaxum


Der Algorithmus wandelt auch Buchstaben in Float Zahlen um...

Gruß

RedWing
 
Hi

Natürlich möcht ich mich auch bei dir bedanken aber deine Version ist mir zu hoch ich verstehe net ganz wie und was passiert könntest mal ein bisschen Dokumentieren?


mfg mike4004
 
moin


Er lässt erst einen String eingeben und überprüft dann jedes einzelne Zeichen ob es auch wirklich Teil einer Zahl von Typ double sein kann.
Das ist noch ein Stück sicherer.


mfg
umbrasaxum
 
Ja.

Hier vielleicht nochmal etwas verständlicher:

Code:
#include <stdio.h>
#include <stdlib.h>

int isDouble(char* toTest){
    while(*toTest != '\0'){                     //wenn *toTest == '\0' hoere auf mit ueberpruefen
        if((*toTest < '0' || *toTest > '9') && *toTest != '.') return 0;
        toTest++;                //schalte den Pointer der auf den String zeigt ein Zeichen weiter
    }
    return 1;
}

int main()
{
    char input[20];
    scanf("%s", input);
    if(isDouble(input) == 1) printf("%lf\n", atof(input));
    else printf("Error: Input was not valid\n");
}

Gruß

RedWing
 
Hi


danke für die Erkläreung so weit ich das jetzt verstehe prüft er nur obs double ist er verändert den string aber net und lässt das Komma stehen.

schön wärs wenn er gar keine Buchstaben annehmen würde sonderen nur Zahlen und . und aus Komma eine halt Punkte macht.


gibts ne möglichkeit aus einem String ein zeichen zu löschen sprich den speicher an der Stelle zu löschen so das die Restlichen Werte nach links verschoben werden?

mfg mike4004
 

Neue Beiträge

Zurück