Функция перевода строки цифр в число - C (СИ)
Формулировка задачи:
Если в качестве первого аргумента я указываю какую либо букву, то в качестве результата почему то выводится число 7. если же я пишу доллары, то с каждым последующим долларом выводимое число возрастает.
#include <stdio.h> #include <stdlib.h> #include <ctype.h> double money_value(char s[]); int main(int argc, char **argv) { if(argc < 2) { fprintf(stderr, "Вы не ввели никакого числа\n"); exit(1); } double val = money_value(argv[1]); fprintf(stdout, "%.10f", val); } double money_value(char s[]) { int i = 0, sign=1; double val = 0; double power=1; while(!isdigit(s[i]) && s[i]!='.') { if(s[i]=='-') { sign = -1; } ++i; } while(isdigit(s[i])) { val = 10*val + (s[i]-'0'); ++i; } if(s[i]=='.') { ++i; } while(isdigit(s[i])) { val = 10*val + (s[i]-'0'); power *= 10; ++i; } while(s[i]=='$') { ++i; } return val == 0 ? 0 : sign*val/power; }
./money_value da
7.0000000000
./money_value $
7.0000000000
./money_value $$
3785.0000000000
Решение задачи: «Функция перевода строки цифр в число»
textual
Листинг программы
./money_value '$$'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д