Функция перевода строки цифр в число - 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 '$$'

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы