Ошибка logi c массива l oop дает двойной (неожиданный) результат при запуске программы - PullRequest
0 голосов
/ 25 апреля 2020

так что я работал над своим кодом. У меня есть эти struct

typedef char infotype;
typedef int letak;

typedef struct {
  infotype info;
  letak parent, firstson, nextsibling;
} node;

typedef node tree;

, и я имею в виду, чтобы сделать «дерево» в массив узла и назначить его, поэтому я делаю эти процедуры:

void createTree(tree T[])
{
  T[0].parent = 0;
  T[0].nextsibling = 0;
}

void createNode(tree T[], int k, int i, char value)
{
  if(i == 0)
  {
    T[i].info = value;
    T[i].firstson = i+1;
  }
  else
  {
    T[i].info = value;
    T[i].parent = (i-1) / k;
    T[i].firstson = (i * k) + 1;

    if (i % k == 0)
     {
        printf("Sorry but you cannot have any sibling!");
     }

    else
    {
        T[i].nextsibling = i+1;
    }
   }
  }

и мой основной драйвер is:

#include <stdio.h>

int main()
{
  int maksimum;
  tree pohon[maksimum];
  int i = 0;
  char info;

  maksimum = 3;

  createTree(pohon);

  for (i = 0; i < 3; i++) //here things get weird
  {
    printf("Input the node name : ");
    scanf("%c", &info);
    createNode(pohon, 4, i, info);
  }

  return 0;
 }

, пока я запускаю свою программу, она дает мне сообщение:

Введите имя узла: a

Введите имя узла: Введите имя узла: b

('a' также является вводом от пользователя), но я ожидал, что оно будет:

Введите имя узла: a

Введите имя узла: b

Введите имя узла: c

Может кто-нибудь сказать мне, где я ошибся?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...