main.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. #include <stdio.h>
  2. #include "stdbool.h"
  3. struct Number {
  4. int num;
  5. bool show[7];
  6. };
  7. struct Number number_list[] = {
  8. {0, {1, 1, 1, 0, 1, 1, 1}},
  9. {1, {0, 1, 0, 0, 0, 1, 0}},
  10. {2, {1, 1, 0, 1, 1, 0, 1}},
  11. {3, {1, 1, 0, 1, 0, 1, 1}},
  12. {4, {0, 1, 1, 1, 0, 1, 0}},
  13. {5, {1, 0, 1, 1, 0, 1, 1}},
  14. {6, {1, 0, 1, 1, 1, 1, 1}},
  15. {7, {1, 1, 0, 0, 0, 1, 0}},
  16. {8, {1, 1, 1, 1, 1, 1, 1}},
  17. {9, {1, 1, 1, 1, 0, 1, 1}},
  18. };
  19. void writeLine_1(struct Number *number);
  20. void writeLine_2_3(struct Number *number);
  21. void writeLine_4(struct Number *number);
  22. void writeLine_5_6(struct Number *number);
  23. void writeLine_7(struct Number *number);
  24. void writeLine(int line, struct Number *number);
  25. int chatToNumber(char n);
  26. void writeMoreNumber(char *number);
  27. int main(int argc, char **argv){
  28. if (argc != 2)
  29. printf("Please Enter one number.");
  30. writeMoreNumber(argv[1]);
  31. return 0;
  32. }
  33. void writeMoreNumber(char *number) {
  34. for (int i = 1; i <= 7; i++) {
  35. for (char *ch = number; *ch != 0; ch++) {
  36. int n = chatToNumber(*ch);
  37. if (n == -1)
  38. continue;
  39. struct Number *num = number_list + n;
  40. writeLine(i, num);
  41. printf(" ");
  42. }
  43. printf("\n");
  44. }
  45. }
  46. int chatToNumber(char n) {
  47. switch (n) {
  48. case '1': return 1;
  49. case '2': return 2;
  50. case '3': return 3;
  51. case '4': return 4;
  52. case '5': return 5;
  53. case '6': return 6;
  54. case '7': return 7;
  55. case '8': return 8;
  56. case '9': return 9;
  57. case '0': return 0;
  58. default: return -1;
  59. }
  60. }
  61. void writeLine(int line, struct Number *number) {
  62. switch (line) {
  63. case 1:
  64. writeLine_1(number);
  65. break;
  66. case 2:
  67. case 3:
  68. writeLine_2_3(number);
  69. break;
  70. case 4:
  71. writeLine_4(number);
  72. break;
  73. case 5:
  74. case 6:
  75. writeLine_5_6(number);
  76. break;
  77. case 7:
  78. writeLine_7(number);
  79. break;
  80. default:
  81. break;
  82. }
  83. }
  84. void writeLine_1(struct Number *number) {
  85. if (number->show[0])
  86. printf("* * * * *");
  87. else if (number->show[1] && number->show[2])
  88. printf("* *");
  89. else if (number->show[1])
  90. printf(" *");
  91. else if (number->show[2])
  92. printf("* ");
  93. else
  94. printf(" ");
  95. }
  96. void writeLine_2_3(struct Number *number) {
  97. if (number->show[1] && number->show[2])
  98. printf("* *");
  99. else if (number->show[1])
  100. printf(" *");
  101. else if (number->show[2])
  102. printf("* ");
  103. else
  104. printf(" ");
  105. }
  106. void writeLine_4(struct Number *number) {
  107. if (number->show[3])
  108. printf("* * * * *");
  109. else if (number->show[1] && number->show[2] || number->show[4] && number->show[5])
  110. printf("* *");
  111. else if (number->show[1] || number->show[5])
  112. printf(" *");
  113. else if (number->show[2] || number->show[4])
  114. printf("* ");
  115. else
  116. printf(" ");
  117. }
  118. void writeLine_5_6(struct Number *number) {
  119. if (number->show[4] && number->show[5])
  120. printf("* *");
  121. else if (number->show[5])
  122. printf(" *");
  123. else if (number->show[4])
  124. printf("* ");
  125. else
  126. printf(" ");
  127. }
  128. void writeLine_7(struct Number *number) {
  129. if (number->show[6])
  130. printf("* * * * *");
  131. else if (number->show[4] && number->show[5])
  132. printf("* *");
  133. else if (number->show[5])
  134. printf(" *");
  135. else if (number->show[4])
  136. printf("* ");
  137. else
  138. printf(" ");
  139. }