/home/toolbox/public_html/solutions/118/11830/a.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <fcntl.h>
6 #include <stdint.h>
7 #include <math.h>
8 #include <stdlib.h>
9 #include <ctype.h>
10
11 #define TRUE (1 == 1)
12 #define FALSE (1 != 1)
13
14 #define DEBUG if (FALSE)
15
16 /*
17 * Author: Isaac Traxler
18 * Date: 2021-12-5
19 * Purpose: fun
20 * Problem: 11830 - Contract revision
21 */
22
23 /*
24 * This template reads data until a terminating value is reached.
25 */
26
27 #define MAX_DIGITS 111
28
29 int digit;
30 char num[MAX_DIGITS];
31
32 void init()
33 {
34 /* FUNCTION init */
35 } /* FUNCTION init */
36
37 void dump()
38 {
39 /* FUNCTION dump */
40 } /* FUNCTION dump */
41
42 int getInput()
43 {
44 /* FUNCTION getInput */
45 int dataReadFlag;
46 scanf(" %d %s ", &digit, num);
47 DEBUG printf("(digit %d) (num[%s])\n", digit, num);
48 dataReadFlag = ! ((0 == digit) && (0 == strcmp(num, "0")));
49 return (dataReadFlag);
50 } /* FUNCTION getInput */
51
52 void removeDigit(char x)
53 {
54 /* FUNCTION removeDigit */
55 int i;
56 int j;
57 int slen;
58
59 slen = strlen(num);
60 for (i=0,j=0; slen>i; i++)
61 {
62 /* for */
63 if (x != num[i])
64 {
65 /* keep char */
66 num[j] = num[i];
67 j++;
68 } /* keep char */
69 } /* for */
70 if (0 == j)
71 {
72 /* empty */
73 num[0] = '0';
74 j=1;
75 } /* empty */
76 num[j] = 0;
77 } /* FUNCTION removeDigit */
78
79 int removeLeadingZeroes()
80 {
81 /* FUNCTION removeLeadingZeroes */
82 int start;
83 int slen;
84
85 start = 0;
86 slen = strlen(num) - 1;
87 while ((start < slen) && (num[start] == '0'))
88 {
89 /* while */
90 start++;
91 } /* while */
92 return start;
93 } /* FUNCTION removeLeadingZeroes */
94
95 void process()
96 {
97 /* FUNCTION process */
98 int start;
99 int i;
100 int slen;
101
102 removeDigit(digit+'0');
103 start = removeLeadingZeroes();
104 slen = strlen(num);
105 DEBUG printf("%d %s\n", start, num);
106 for (i=start; slen>i; i++)
107 {
108 /* print each digit */
109 printf("%c", num[i]);
110 } /* print each digit */
111 printf("\n");
112 } /* FUNCTION process */
113
114 int main()
115 {
116 /* main */
117 int moreToDo;
118
119 init();
120 moreToDo = getInput();
121 while (moreToDo)
122 {
123 /* while */
124 process();
125 moreToDo = getInput();
126 } /* while */
127
128 return EXIT_SUCCESS;
129 } /* main */
130