2012年8月20日

UVa 706 - LCD Display


#include <stdio.h>
void display(int n, int t, int type) {
  int i, j;
  switch (type) {
  case 1:
    putchar(' ');
    for (i = 0; i < t; i++)
      printf("%c", (n == 1 || n == 4) ? ' ' :  '-');
    putchar(' ');
    break;
  case 2:
    if (n == 1 || n == 2 || n == 3 || n == 7) putchar(' ');
    else putchar('|');
    for (i = 0; i < t; i++)
      putchar(' ');
    printf("%c", (n == 5 || n == 6) ? ' ' :  '|');
    break;
  case 3:
    putchar(' ');
    for (i = 0; i < t; i++)
      printf("%c", (n == 1 || n == 7 || n == 0) ? ' ' :  '-');
    putchar(' ');
    break;
  case 4:
    if (n == 1 || n == 3 || n == 4 || n == 5 || n == 7 || n == 9) putchar(' ');
    else putchar('|');
    for (i = 0; i < t; i++)
      putchar(' ');
    printf("%c", (n == 2) ? ' ' :  '|');
    break;
  case 5:
    putchar(' ');
    for (i = 0; i < t; i++)
      printf("%c", (n == 1 || n == 4 || n == 7) ? ' ' :  '-');
    putchar(' ');
    break;
  }
}
int main() {
  int i, j, k, n, times, type;
  while (scanf("%d %d", ×, &n) && times || n) {
    char num[20];
    sprintf(num, "%d", n);
    for (type = 1; type <= 5; type++) {
      if (type == 2 || type == 4) k = times;
      else k = 1;
      while (k--) {
        for (i = 0; num[i] != '\0'; i++) {
          if (i) putchar(' ');
          display(num[i] - '0', times, type);
        }
        puts("");
      }
    }
    puts("");
  }
  return 0;
}

沒有留言:

張貼留言