diff options
author | Daniel Santos <dacs.git@brilhante.top> | 2022-03-09 14:06:02 +0000 |
---|---|---|
committer | Daniel Santos <dacs.git@brilhante.top> | 2022-03-09 14:06:02 +0000 |
commit | dcc93c0ba6fd640456544e911bcdcf5d6e66a688 (patch) | |
tree | f79f7540eeda3d2c1c4bacc02ecd5f93c3e2bd6b | |
parent | ef7e6f99a265339336bf02305f9d25cfedbf04e7 (diff) | |
download | numericx-c-dcc93c0ba6fd640456544e911bcdcf5d6e66a688.tar.gz |
add TO_UNITS_ON_THE_END and FROM_UNITS_ON_THE_END
* add reverse_string() * number variable instead of number_first/number_last * add flags TO_UNITS_ON_THE_END and FROM_UNITS_ON_THE_END Signed-off-by: Daniel Santos <dacs.git@brilhante.top>
-rw-r--r-- | numericx.c | 55 |
1 files changed, 49 insertions, 6 deletions
diff --git a/numericx.c b/numericx.c index 87cde70..2a611d8 100644 --- a/numericx.c +++ b/numericx.c @@ -10,6 +10,18 @@ #define DEBUG false #endif +#ifdef TO_UNITS_ON_THE_END +#define TO_UNITS_ON_THE_END true +#else +#define TO_UNITS_ON_THE_END false +#endif + +#ifdef FROM_UNITS_ON_THE_END +#define FROM_UNITS_ON_THE_END true +#else +#define FROM_UNITS_ON_THE_END false +#endif + typedef struct NumeralPtr { char const* symbol; @@ -83,15 +95,43 @@ is_the_same(numeral_ptr* numeral, char* number_arg) void print_numeral(numeral_ptr* numeral) { - while( !(numeral == NULL) ) + if( TO_UNITS_ON_THE_END ) { - printf("%c", *(numeral->symbol)); - numeral = numeral->next; + while( !(numeral->next == NULL) ) + numeral = numeral->next; + + while( !(numeral == NULL) ) + { + printf("%c", *(numeral->symbol)); + numeral = numeral->previous; + } + } + else + { + while( !(numeral == NULL) ) + { + printf("%c", *(numeral->symbol)); + numeral = numeral->next; + } } printf("\n"); } +void +reverse_string(char* string) +{ + char tmp; + char* string_end = string + strlen(string); + + while ( --string_end > string ) + { + tmp = *string; + *string++ = *string_end; + *string_end = tmp; + } +} + int main(int argc, char* argv[]) { @@ -121,15 +161,17 @@ main(int argc, char* argv[]) char* to_first = to; char* to_last = to + (strlen(to) - 1); - char* number_first = number; - char* number_last = number + (strlen(number) - 1); + if( FROM_UNITS_ON_THE_END ) + { + reverse_string(number); + } /* initializing counting and result */ numeral_ptr* counting = new_digit(NULL, from_first); numeral_ptr* result = new_digit(NULL, to_first); /* increments until it finishes */ - while( !is_the_same(counting, number_first) ) + while( !is_the_same(counting, number) ) { if(DEBUG) { @@ -152,6 +194,7 @@ main(int argc, char* argv[]) print_numeral(counting); printf("result: "); } + print_numeral(result); return EXIT_SUCCESS; |