Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5. int myAtoi( char *s, int *error)
  6. {
  7. int result = 0;
  8. int sign = 1;
  9. int i = 0;
  10. int j = 0;
  11.  
  12. int decimal = 0;
  13. int count = 0;
  14.  
  15. double index = 0;
  16.  
  17. for (j = 1; s[j] != '\0' ; j++){
  18. count = count + 1;
  19. }
  20. for (i = i; s[i] != '\0' ; i++){
  21. while (s[i] == ' ')
  22. {
  23. i++;
  24. }
  25. ///Converting Hex
  26. if (s[0] == '0' && s[1] == 'x'){
  27.  
  28. index = count - i;
  29. if(s[i] > '0' && s[i] <= '9'){
  30.  
  31. decimal = decimal + (s[i] - 48) * pow(16.0,(double)index);
  32. }
  33. else if((s[i] >= 'a' && s[i] <= 'f') ){
  34.  
  35. decimal = decimal + (s[i] - 87) * pow(16.0,(double)index);
  36. }
  37. else if((s[i] > '9' && s[i] < 'a') || (s[i] >= 'g')){
  38. index = count - i + 1;
  39. decimal = (decimal/pow(16.0,(double)index));
  40. return decimal;
  41. }
  42. else{
  43. i++;
  44. }
  45. result = decimal;
  46.  
  47. }
  48. ///Converting Decimal
  49. else {
  50. while (s[i] == ' ' || s[i] == '0'){
  51. i++;
  52. }
  53. if (s[i] == '-')
  54. {
  55. sign = -1;
  56. i++;
  57. }
  58. for (i = i; s[i] != '\0' ; i++){
  59.  
  60. if(s[i] > ':' || s[i] < '/'){
  61. return result;}
  62.  
  63. result = result*10 + s[i] - '0'; ///Minus '0' ascii 48 from answer to get back to decimal value
  64. result = sign*result;
  65. }
  66. }
  67. }
  68.  
  69. return result;
  70. }
  71.  
  72. int main()
  73. {
  74.  
  75. char str[] = "0x10";
  76. int error = '0';
  77. printf("%d ", myAtoi(str, &error));
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement