diff --git a/exercise-04-multiplication-table/main.c b/exercise-04-multiplication-table/main.c new file mode 100644 index 0000000..63010dc --- /dev/null +++ b/exercise-04-multiplication-table/main.c @@ -0,0 +1,61 @@ +#include +#include + +int main() { + int range; + + printf("Rozsah:\n"); + if (scanf("%d", &range) != 1) { + printf("Nespravny vstup.\n"); + return EXIT_FAILURE; + } + + int largest_number = range * range; + int largest_digit_count = 0; + int range_digit_count = 0; + + + int tmp = largest_number; + while(tmp != 0) { + largest_digit_count++; + tmp /= 10; + } + + tmp = range; + while(tmp != 0) { + range_digit_count++; + tmp /= 10; + } + + // Header + for(int i = range + 1; i > 0; i--) { + if(i == range + 1) { + printf("%*s|", largest_digit_count, ""); + continue; + } + + printf("%*d", largest_digit_count + 1, i); + } + putchar('\n'); + + // Separator + for(int j = 0; j < largest_digit_count; j++) { + putchar('-'); + } + putchar('+'); + + for(int j = 0; j < (largest_digit_count + 1) * range; j++) { + putchar('-'); + } + putchar('\n'); + + // Table lines + for(int line = 1; line <= range; line++) { + printf("%*d|", largest_digit_count, line); + + for(int column = range; column >= line; column--) { + printf("%*d", largest_digit_count + 1, column * line); + } + putchar('\n'); + } +}