Advertisement
levartolona

C_PRG_LANG_EX_3.6

Feb 1st, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <limits.h>
  5.  
  6. #define ABS(n) n >= 0 ? n : -n
  7.  
  8. void reverse(char *s)
  9. {
  10.     char *end = s;
  11.  
  12.     while (*end)
  13.         end++;
  14.     end--;
  15.  
  16.     while (end > s)
  17.     {
  18.         char tmp = *end;
  19.         *end-- = *s;
  20.         *s++ = tmp;
  21.     }
  22.  
  23.     return;
  24. }
  25.  
  26. void my_itoa_v2(int numb, char *s, int min_len)
  27. {
  28.     int sign = 0;
  29.     if (numb < 0)
  30.         sign++;
  31.  
  32.     char *start = s;
  33.     do
  34.     {
  35.         int digit = (numb % 10);
  36.         digit = ABS(digit);
  37.         *s++ = digit + '0';
  38.         numb /= 10;
  39.     } while(numb);
  40.  
  41.     if (sign)
  42.         *s++ = '-';
  43.  
  44.     for(char *ptr = start; ptr != s; ptr++)
  45.         min_len--;
  46.  
  47.     for(int i = 0; i < min_len; i++)
  48.         *s++ = ' ';
  49.  
  50.     *s = '\0';
  51.  
  52.     reverse(start);
  53.  
  54.     return;
  55. }
  56.  
  57. int main(void)
  58. {
  59.     srand(time(NULL));
  60.     char str[256];
  61.  
  62.     my_itoa_v2(INT_MIN, str, 20);
  63.     printf("for numb %i and min length %i result is:\n%s\n\n",
  64.            INT_MIN, 20, str);
  65.  
  66.     my_itoa_v2(INT_MAX, str, 20);
  67.     printf("for numb %i and min length %i result is:\n%s\n\n",
  68.            INT_MAX, 20, str);
  69.     for (int i = 0; i < 10; i++)
  70.     {
  71.         int numb = rand();
  72.         int gape = rand() % 10;
  73.         my_itoa_v2(numb, str, gape);
  74.         printf("for numb %i and min length %i result is:\n%s\n\n",
  75.                numb, gape, str);
  76.     }
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement