markkoval1999

Untitled

Nov 16th, 2016
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.38 KB | None | 0 0
  1. #include <ctype.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #include "str_to_number.h"
  6. int str_to_number(char *str)
  7. {
  8.     int i;
  9.     int counter = 0;
  10.     int point_position = 0;
  11.     float result_float = 0;
  12.     int result_int = 0;
  13.     int digit_size = 0;
  14.     int saver[1];
  15.     saver[0] = 0;
  16.     int mas[10];
  17.     int len = strlen(str);
  18.     for (i = 0; i < len - 1; i++)//find digits
  19.     {
  20.         if (str[i] == '.')
  21.         {
  22.             saver[0] = point_position;
  23.         }
  24.         else if (isdigit(str[i]))
  25.         {
  26.             mas[digit_size] = str[i];
  27.             digit_size++;
  28.             point_position++;
  29.         }
  30.         else if(!isdigit(str[i]))
  31.         {
  32.             counter++;
  33.         }
  34.         else
  35.         {
  36.             continue;
  37.         }
  38.     }
  39.    
  40.     if (counter == len-1)
  41.     {
  42.         printf("There are not digits\n");
  43.         return 0;
  44.     }
  45.  
  46.     for (i = 0; i < digit_size; i++)//translate to Ascii
  47.     {
  48.         mas[i] = mas[i] - 48;
  49.     }
  50.     printf("\nGET RESULT\n");
  51.     for (i = 0; i < digit_size; i++)
  52.     {
  53.         if (saver[0] == 0)
  54.         {
  55.             result_int += mas[i] * pow(10, digit_size - 1 - i);
  56.         }
  57.         else
  58.         {
  59.             if ((i > saver[0]) && (saver[0] != 0))
  60.             {
  61.                 result_float += (mas[i] * pow(10, digit_size - 1 - i)) / pow(10, j - i);
  62.             }
  63.             else if((i<saver[0]) && (saver[0] != 0))
  64.             {
  65.                 result_float += mas[i] * pow(10, digit_size - 2 - i);
  66.             }
  67.         }
  68.     }
  69.  
  70.     if (result_float!=0)
  71.     {
  72.         printf("%.2f", result_float);
  73.         return 0;
  74.     }
  75.     else if (result_int!=0)
  76.     {
  77.         printf("%d", result_int);
  78.         return result_int;
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment