zeiger auf char mit int vergleichen



  • hallo, habe ein kleines programm geschrieben um etwas rekursion zu praktizieren:

    main(){
    
    	char eingabe[10];
     	int n;                                    //anzahl der nachkommastellen
     	char *i;
    ...
    	if (i = strchr(eingabe, '.')) {                            //eingabe enthaelt eine gleitkommazahl
    		*(i+n) = runden( (i+n), (i+n+1));
    		*(i+n+1) = '\0';
    		printf("resultat %s\n", &eingabe);
    	}
    ...
    }
    
    char * runden(char *i, char *j) {
    
    	if (*j == 4 && *(j+1) > 4)
    		*j = runden(j, (j+1));
    
    	if (*j <= 4)
    		return i;
    	if (*j > 4)
    		return ((*i)+1);
    
    }
    

    egal ob eingabe 12.2342 oder 12.2345 enthaelt und es soll auf 3 nachkommastellen gerundet werden, immer kommt 12.235 raus warum. ich hoffe der code ist selbsterklaerend aber wenn nicht, schreibt es infach und ich gebe weitere angaben.

    danke fuer jede antwort
    Gruss caspar



  • ein zahl runden ist nicht schwer.

    c= ((int)(c*pow(10,5)+0.5))/pow(10,5);
    

    mit dem bespiel rundest du auf die 5te Kommastelle.

    wenn du mehr oder weniger brauchst, aenderst du alle 5 auf die zahl, die du willst.



  • danke, das funktioniert sicher einwandfrei -- koennt ihr mir trotzdem den fehler sagen, den ich gemacht habe?


Anmelden zum Antworten