Как исправить «структура не относится к значению» - PullRequest
0 голосов
/ 03 ноября 2019

в моем проекте есть 2 структуры, одна из которых относится к двоичному дереву, вторая к данным студентов в 'int main'. Я не могу получить доступ к функции добавления GETDATA

'' ZKR 'делаетне относится к значению. '(xcode)

Я также не могу создать счетчик количества вершин моего дерева

#include <iostream>
#include <ctime>
#include <cstring>

using namespace std;
struct ZKR {

    char FACULTY[30];
    int ACADEMIC_DEGREE;
    char FIO[30];
};

struct point
{
    char *data;
    point *left;
    point *right;
};

point* tree(int n, point* p)
{
    point *r;
    int nl, nr;
    if (n == 0) { p = NULL; return p; }
    nl = n / 2;
    nr = n - nl - 1;
    r = new point;
    char s[50];
    cout << "Значение: ";
    cin >> s;
    r->data = new char[strlen(s) + 1];
    strcpy(r->data,s);
    r->left = tree(nl, r->left);
    r->right = tree(nr, r->right);
    p = r;
    return p;
}

void GETDATA(ZKR*M, int N)
{
    cin.ignore();
    for (int i = 0; i < N; i++)
    {
        cout << "\n";
        cout << "FACULTY: ";
        cin.getline(M[i].FACULTY, 30);
        cout << "\n";
        cout << "FIO: ";
        cin.getline(M[i].FIO, 30);
        cout << "\n";
        cout << "ACADEMIC DEGREE: ";
        cin >> M[i].ACADEMIC_DEGREE;
        cin.ignore();

    }
}
void treeprint(point *p, int &count) {
    if (p != NULL) {
        treeprint(p->left, count);
        cout << p->data << "  ";
        treeprint(p->right, count);
        if ((p->left == NULL) && (p->right == NULL))
            count = count + 1;
    }
}

int main()
{
    setlocale(LC_ALL, "russian");
    srand(time(NULL));
    int n = 0, k = 0, count = 0;
    point *beg = nullptr;
    cout << "Enter the number of students" << endl;
    int N;
    cin >> N;


    ZKR*M = new ZKR[N];

    do
    {
        cout << "1. BUILD a binary tree\n";
        cout << "2. SHOW a binary tree\n";
        cout << "3. GETDATA\n";
        cin >> k;
        switch (k)
        {
            case 1:
                cout << "Введите количество элементов" << endl;
                cin >> n;
                beg = tree(n, beg);
                cout << endl;
                break;
            case 2:
                treeprint(beg, count);
                cout << endl;
                cout << "Листьев в дереве: " << count << endl;
                break;

            case 3:
                GETDATA(ZKR*M, N);
                break;
        }
    } while (k != 4);
    system("pause");
    return 0;
}

Буду благодарен за любую помощь

1 Ответ

0 голосов
/ 03 ноября 2019

Эта строка не синтаксически правильна:

GETDATA(ZKR*M, N);

Заменить ее на:

GETDATA(M, N);

M - указатель на объект типа ZKR.

...