如何修复'结构不引用值'

问题描述 投票:0回答:1

在我的项目中,有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;
}

我将非常感谢您的帮助

c++ xcode8
1个回答
0
投票

此行在语法上不正确:

GETDATA(ZKR*M, N);

替换为:

GETDATA(M, N);

M是指向ZKR类型的对象的指针。

© www.soinside.com 2019 - 2024. All rights reserved.