Преобразовать строку цифр в число типа int - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите поправить код функции, не работает при работе с ведущим знаком '-'. Описание задачи внутри.. Заранее спс) P.S:Стандартными функциями пользоваться нельзя..
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. /**
  5. 1.2. Написать функцию int stonum( char *str ), преобразующую строку цифр str
  6. (возможен ведущий знак ‘+’ или ‘-‘) в число типа int.
  7. **/
  8. int stonum(char *str);
  9. int main()
  10. {
  11. SetConsoleCP(1251);
  12. SetConsoleOutputCP(1251);
  13. char *str=(char*)malloc(10*sizeof(char));
  14. printf("Введите строку цифр: ");
  15. gets(str);
  16. printf("Число полученное в результате обработки: ");
  17. printf("%d ",stonum(str));
  18. return 0;
  19. }
  20. int stonum(char *str)
  21. {
  22. int n=0,k=1;
  23. while (*str)
  24. {
  25. if (*str=='-')
  26. k=-1;
  27. if (*str=='+')
  28. k=1;
  29. else
  30. n=10*n+*str-'0';
  31. str++;
  32. }
  33. n*=k;
  34. return n;
  35. }

Решение задачи: «Преобразовать строку цифр в число типа int»

textual
Листинг программы
  1. int stonum(char *str)
  2. {
  3.     int n=0,k=1;
  4.     while (*str)
  5.     {
  6.         if (*str=='-') k=-1;
  7.         if (*str=='+') k=1;
  8.         if ((*str >= '0') && (*str <= '9')) n=10*n+*str-'0';
  9.         str++;
  10.     }
  11.     n*=k;
  12.     return n;
  13. }

Объяснение кода листинга программы

  1. Функция stonum принимает в качестве аргумента указатель на строку символов str.
  2. Переменная n инициализируется значением 0 и используется для хранения результата преобразования строки в число.
  3. Переменная k инициализируется значением 1 и используется для хранения знака числа (положительного или отрицательного).
  4. В цикле while происходит проход по каждому символу строки.
  5. Если текущий символ равен '-', то значение переменной k меняется на -1 (отрицательный знак).
  6. Если текущий символ равен '+', то значение переменной k меняется на 1 (положительный знак).
  7. Если текущий символ является цифрой (больше или равен '0' и меньше '9'), то значение переменной n увеличивается на 10 умноженное на текущее значение n и вычитается значение ASCII кода символа '0' (для преобразования цифры в число).
  8. После прохода по всем символам строки, значение переменной n умножается на значение переменной k и возвращается в качестве результата работы функции.

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


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

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

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы