Guest User

Untitled

a guest
Sep 23rd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. extern crate libc; // 0.2.43
  2.  
  3. use libc::putchar;
  4.  
  5. fn main() {
  6. draw_table(2);
  7. draw_table(5);
  8. draw_table(10);
  9. }
  10.  
  11. fn draw_table(num: usize) {
  12. let sum = num * num;
  13. let num_digits = count_digits(sum);
  14.  
  15. for ref row in 0..=num {
  16. for ref col in 0..=num {
  17. let cur_sum = row * col;
  18. unsafe {
  19. for _i in 0..=(num_digits - count_digits(cur_sum)) {
  20. putchar(32);
  21. }
  22.  
  23. print_number(cur_sum);
  24.  
  25. if col < &num {
  26. putchar(',' as i32);
  27. }
  28. }
  29. }
  30.  
  31. unsafe {
  32. putchar(10);
  33. }
  34. }
  35. }
  36.  
  37. fn count_digits(mut num: usize) -> u32 {
  38. let mut count: u32 = 0;
  39. if num != 0 {
  40. while num > 0 {
  41. num /= 10;
  42. count += 1;
  43. }
  44. } else {
  45. count = 1;
  46. }
  47.  
  48. count
  49. }
  50.  
  51. fn print_number(num: usize) {
  52. if num >= 10 {
  53. print_number(num / 10);
  54. }
  55.  
  56. unsafe {
  57. putchar((num % 10) as i32 + 48);
  58. }
  59. }
Add Comment
Please, Sign In to add comment