File: Stare vježbe/vjezbe06/41__atof.c

  1. /*
  2.   41__atof.c
  3.   -----
  4.   Implementacija funkcije atof koja sluzi za pretvaranje unesenog stringa
  5.   u realni broj (tip double)
  6. */
  7.  
  8. #include <stdio.h>
  9. /* u ctype.h nalaze se deklaracije funkcija isspace i isdigit */
  10. #include <ctype.h>
  11.  
  12. #define MAXREDAK 100
  13.  
  14. double atof(char s[])
  15. {
  16. double vrijednost, potencija;
  17. int i, predznak;
  18.  
  19. for (i=0; isspace(s[i]); i++);
  20. predznak = (s[i] == '-') ? -1 : 1;
  21. if (s[i] == '+' || s[i] == '-')
  22. i++;
  23. for (vrijednost = 0.0; isdigit(s[i]); i++)
  24. vrijednost = 10.0 * vrijednost + (s[i] - '0');
  25. if (s[i] == '.')
  26. i++;
  27. for (potencija = 1.0; isdigit(s[i]); i++) {
  28. vrijednost = 10.0 * vrijednost + (s[i] -'0');
  29. potencija *= 10.0;
  30. }
  31.  
  32. return predznak * vrijednost / potencija;
  33. }
  34.  
  35. int main()
  36. {
  37. double suma, atof( char[]);
  38. char redak[MAXREDAK];
  39. suma = 0.0;
  40. while (gets(redak) != NULL)
  41. printf("\t%f\n", atof(redak));
  42.  
  43. return 0;
  44. }
  45.