Как напечатать 2 таблицы друг над другом на языке C?

#c

#c

Вопрос:

Я изучаю C в университете, и мы получили наш первый проект по созданию игры scrabble.

У меня проблемы с таблицами, так как я пытаюсь напечатать таблицу поверх другой, чтобы поместить несколько / разных символов в 1 «ячейку». Я знаю, что это невозможно с обычной таблицей, но я мог бы создать 2 разные таблицы и просто распечатать их друг над другом, так что, похоже, в одной ячейке 2 разных символа.

Это моя первая таблица:

первая таблица

и это то, как я хочу, чтобы это выглядело:

желаемый внешний вид

Я пытаюсь сделать так, чтобы она выглядела как вторая с цифрами от 1 до 15 слева и буквами в том же пространстве, что и специальные символы amp;, %, …

Код, который я использую для печати первой таблицы:

 //Affichage du tableau
    for (i=0; i<16; i  )
    {
        for(j=0; j<16; j  )
        {
            printf(" %c ", tab[i][j]);
        }
        printf("n");
    }
 

Комментарии:

1. Я предполагаю, что это что-то вроде двойной оценки слов и тому подобное. Вы могли бы создать первую таблицу и использовать ее в качестве подстановки при печати окончательной таблицы. Если в таблице поиска есть специальный символ, вы печатаете его, а затем букву, если она есть.

Ответ №1:

Простой подход был бы примерно таким:

  • Предполагая, что в '' качестве символа используются 2 таблицы символов, когда вы не хотите ничего печатать.

    #определить МАКСИМУМ 3

   char tab1[MAX][MAX] = {{'a', 'b', 0}, {'amp;', 0, '#'}, {0, '8', 'V'}};
  char tab2[MAX][MAX] = {{'amp;', 0, '#'}, {0, '8', 'V'}, {'a', 'b', 0}};
  // or any table you have  

  for (int i = 0; i < MAX; i  )
  {
    printf("-|", i 1); // if you want the line number
    for (int j = 0; j < MAX; j  )
    {
      if (tab1[i][j] != '') 
        printf("%c", tab1[i][j]);
      else
        printf(" ");
      
      if (tab2[i][j] != '')
        printf("%c", tab2[i][j]);
      else
        printf(" ");
    }
    printf("n");
  }

And you can easily  adjust the spacing in the print statements.
This will print:


 1|aamp;b  #
 2|amp;  8#V
 3| a8bV 
 

Комментарии:

1. Я бы порекомендовал вам немного поработать с инструкцией printf , поскольку она может быть очень универсальной.

2. printf("%c%c",(tab1[i][j] != '')?tab1[i][j]:" ", (tab2[i][j] != '')?tab2[i][j]:" ") возможно

3. Если вы идете по этому пути, просто вырежьте != '' , поскольку '' это целочисленное 0 значение и его можно использовать как таковое