62 lines
1.1 KiB
C
62 lines
1.1 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
|
|
int main() {
|
|
int range = -1;
|
|
|
|
printf("Rozsah:\n");
|
|
if (scanf("%d", &range) != 1 || range <= 0) {
|
|
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');
|
|
}
|
|
}
|