Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ctype.h>
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include "str_to_number.h"
- int str_to_number(char *str)
- {
- int i;
- int counter = 0;
- int point_position = 0;
- float result_float = 0;
- int result_int = 0;
- int digit_size = 0;
- int saver[1];
- saver[0] = 0;
- int mas[10];
- int len = strlen(str);
- for (i = 0; i < len - 1; i++)//find digits
- {
- if (str[i] == '.')
- {
- saver[0] = point_position;
- }
- else if (isdigit(str[i]))
- {
- mas[digit_size] = str[i];
- digit_size++;
- point_position++;
- }
- else if(!isdigit(str[i]))
- {
- counter++;
- }
- else
- {
- continue;
- }
- }
- if (counter == len-1)
- {
- printf("There are not digits\n");
- return 0;
- }
- for (i = 0; i < digit_size; i++)//translate to Ascii
- {
- mas[i] = mas[i] - 48;
- }
- printf("\nGET RESULT\n");
- for (i = 0; i < digit_size; i++)
- {
- if (saver[0] == 0)
- {
- result_int += mas[i] * pow(10, digit_size - 1 - i);
- }
- else
- {
- if ((i > saver[0]) && (saver[0] != 0))
- {
- result_float += (mas[i] * pow(10, digit_size - 1 - i)) / pow(10, j - i);
- }
- else if((i<saver[0]) && (saver[0] != 0))
- {
- result_float += mas[i] * pow(10, digit_size - 2 - i);
- }
- }
- }
- if (result_float!=0)
- {
- printf("%.2f", result_float);
- return 0;
- }
- else if (result_int!=0)
- {
- printf("%d", result_int);
- return result_int;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment