Új hozzászólás Aktív témák

  • don_peter

    senior tag

    Kíváncsi vagyok a véleményetekre:

    void float_to_str(float szam){

    printf("Kezdő szám: %f\n", szam);

    unsigned int i = 0, x = 0, tizedes = 0;
    static char szamok[8];
    long int intszam = 0;
    if (szam-(int)szam > 0){ //egész vagy sem
    //ha lebegőpontos
    while(szam-(int)szam != 0){//amég nem egész
    szam = szam * 10;
    i++;
    tizedes = i;
    }
    intszam = szam;

    printf(" Felszorzott szám: %li\n Hányszor futott le: %i\n Tizedes: %i\n", intszam, i, tizedes);

    i = 0;
    while(intszam > 0){//addig osztunk amég nagyobb intszam mint nulla
    szamok[i] = intszam % 10;
    intszam = intszam / 10;
    i++;
    }

    printf(" Szétszedve: ");

    x = i; // x változóba töltjuk az i változót, hogy késöbb is felhasználható legyen az i értéke
    while(i){
    printf("%i,", szamok[i---1]);
    }

    printf("\n");

    printf("Eredmény: ");

    while(x){
    if(x == tizedes)
    printf(".");
    printf("%i", szamok[x---1]);
    }

    printf("\n");

    }else{

    printf("Ez egy kerek szám, nincs művelet.\n");

    }
    }

    Mai függvényen belül indítjuk:

    float_to_str(12.34567);

    Eredménye:

    Kezdő szám: 12.345670
    Felszorzott szám: 12345669
    Hányszor futott le: 6
    Tizedes: 6
    Szétszedve: 1,2,3,4,5,6,6,9,
    Eredmény: 12.345669

    Véleményetek szerint jó és hatásos a megoldásom?
    Az eredményből látszik mikor mit tesz a program.
    Az elmélet az, hogy, ha beadok egy lebegőpontos számot akkor azt valamilyen megoldással string-é alakítsam, és átalakítás után újból kiírassam.
    Hogy teljes legyen a kép ez azért szükséges a számomra mert a végeredményt nem kezelhetem "float" lebegőpontos számként mert az eszköz amin kiíratom az eredményt nem hajlandó a float típusokat megjeleníteni.
    Nézzétek ezt a kódot úgy, hogy alig 3napja kezdtem el tanulni a C-t szóval nem ismerem behatóan a nyelvet.

Új hozzászólás Aktív témák