From bfce8f0d0d828209ec0bec71371ee94a7ad62d3e Mon Sep 17 00:00:00 2001 From: Michael Hunteman Date: Tue, 4 Jul 2023 17:03:53 -0500 Subject: Initial commit --- three/conv.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ three/escape.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++ three/expand.c | 19 +++++++++++++++++ three/search.c | 25 ++++++++++++++++++++++ 4 files changed, 162 insertions(+) create mode 100644 three/conv.c create mode 100644 three/escape.c create mode 100644 three/expand.c create mode 100644 three/search.c (limited to 'three') diff --git a/three/conv.c b/three/conv.c new file mode 100644 index 0000000..d3e654e --- /dev/null +++ b/three/conv.c @@ -0,0 +1,65 @@ +#include +#include + +void +reverse(char s[]) +{ + int i = 0; + while (s[i] != '\0') { + ++i; + } + --i; + char c; + for (int j = 0; j < i / 2; ++j) { + c = s[i - j]; + s[i - j] = s[j]; + s[j] = c; + } +} + +void +itoa(int n, char s[]) +{ + int i, sign; + if ((sign = n) < 0) { + n = -n - 1; + } + i = 0; + do { + s[i++] = n % 10 + '0'; + } while ((n /= 10) > 0); + if (sign < 0) { + s[i++] = '-'; + } + s[i] = '\0'; + reverse(s); +} + +void +itob(int n, char s[], int b) +{ + int i, sign; + if ((sign = n) < 0) { + n = -n; + } + i = 0; + do { + s[i++] = (n % b <= 9) ? n % b + '0' : n % b - 10 + 'a'; + } while ((n /= b) > 0); + if (sign < 0) { + s[i++] = '-'; + } + s[i] = '\0'; + reverse(s); +} + +int +main() +{ + char s[32]; + itoa(INT_MIN, s); + printf("%s\n", s); + itob(380, s, 16); + printf("%s\n", s); + return 0; +} diff --git a/three/escape.c b/three/escape.c new file mode 100644 index 0000000..1f1dfe9 --- /dev/null +++ b/three/escape.c @@ -0,0 +1,53 @@ +#include + +void +ctoe() +{ + int c; + while ((c = getchar()) != EOF) { + if (c == '\\') { + c = getchar(); + switch(c) { + case 'n': + putchar('\n'); + break; + case 't': + putchar('\t'); + break; + default: + putchar(c); + break; + } + } else { + putchar(c); + } + } +} + +void +etoc() +{ + int c; + while ((c = getchar()) != EOF) { + switch(c) { + case '\n': + putchar('\\'); + putchar('n'); + break; + case '\t': + putchar('\\'); + putchar('t'); + break; + default: + putchar(c); + break; + } + } +} + +int +main() +{ + etoc(); + return 0; +} diff --git a/three/expand.c b/three/expand.c new file mode 100644 index 0000000..180cc98 --- /dev/null +++ b/three/expand.c @@ -0,0 +1,19 @@ +#include + +int +main() +{ + int c, p; + while ((c = getchar()) != EOF) { + if (c == '-') { + c = getchar(); + for (++p; p < c + 1; ++p) { + putchar(p); + } + } else { + putchar(c); + } + p = c; + } + return 0; +} diff --git a/three/search.c b/three/search.c new file mode 100644 index 0000000..30426c7 --- /dev/null +++ b/three/search.c @@ -0,0 +1,25 @@ +#include + +int +binsearch(int x, int v[], int n) +{ + int low, high, mid; + low = 0; + high = n - 1; + while (low <= high) { + mid = (low + high) / 2; + if (x < v[mid]) { + high = mid - 1; + } else { + low = mid; + } + } + return -1; +} + +int +main() +{ + binsearch(); + return 0; +} -- cgit v1.2.3