Informatică, întrebare adresată de oliviasarbuu, 8 ani în urmă

Am o bucata de cod in C si sunt cateva linii de cod pe care nu le inteleg(ultimele 3 linii). Imi puteti explica cum lucreaza? Multumesc!



/* atof: converteste sirul de caractere s la tipul double */

double atof(char s[ ])

{

double val, putere;

int i, semn;

for (i=0; isspace(s[i]); i++) /* treci peste spatiile albe */

;

semn = (s[i] == ‘-’) ? -1 : 1;

if (s[i] == ‘+’|| s[i] == ‘-’)

i++;

Anexe:

danboghiu66: Pune o poza cu tot codul. Ceea ce este aici e dubios rau de tot.
danboghiu66: In special partea cu semn=...., care trebuie facuta numai pt i=0
oliviasarbuu: Am adaugat poza la intrebare
danboghiu66: Nu are nici o sansa sa meaga. Linia 9 este un for care nu are nici un efect. Daca ai mai multe linii in IF sau FOR, foloseste { }
lucaciucandrei: te-ai complicat tare
lucaciucandrei: functia asta se poate realiza mai usor

Răspunsuri la întrebare

Răspuns de lucaciucandrei
4

e mai "precisa"

double atof(char * s) {

   double rez = 0, dec = 1;

   int pct = 0, minus = 0;

   if ( * s == '-') {

       s++;

       minus = 1;

   }

   while ( * s) {

       if (pct) {

           dec = dec / 10;

           rez = rez + ( * s - '0') * dec;

       }

       else {

           if ( * s == '.')

               pct++;

           else

               rez = rez * 10.0 + ( * s - '0');

       }

       s++;

   }

   if (minus)

       return -rez;

   else

       return rez;

}

Alte întrebări interesante