Сравнение с текстовым файлом для проверки того, присутствует ли данное слово в BST или нет, и ввод из текстового файла - PullRequest
0 голосов
/ 19 октября 2019

Я делаю простую программу сравнения слов.

Для этого у меня есть список слов в текстовом файле с одним словом в строке.

Затем я импортировал все эти словав программу с использованием ifstream, а затем в BST.

Затем я использовал для вставки, создания функций root, search и traversal.

Но я получаю эти две простые ошибки, которые явообще не понимаю /.

Пожалуйста, помогите!

Я использовал BST, чтобы сохранить все слова из файла txt в программе, а затем искать среди них. Я также включил возможность добавления новых слов непосредственно в программу, но не в текстовый файл.

У меня возникают следующие ошибки:

"В функции void create ()

несовместимые типы при присвоении 'char' к 'char [100]'

В функции void insert ()

несовместимые типы при присвоении 'char''char [100]'

"

#include<iostream>
#include <fstream>
#include <string>
using namespace std;

char x;
    char a[100];
    int count=0,i=0;
    char str;
struct node
{
    struct node *left;
    struct node *right;
    char word[100];
};
struct node *root=NULL;
void create()
{
    struct node *newnode;
    newnode=(struct node *)malloc(sizeof(struct node));
    char str[100];

    for(i=0;i<=100;i++) {
        str= a[i];
        }

    strcpy(newnode->word,str);
    newnode->left=NULL;
    newnode->right=NULL;
    root=newnode;
}
void insert()
{
    struct node *newnode,*temp,*parent;
    newnode=(struct node *)malloc(sizeof(struct node));
    char str[100];
    for(i=0;i<=100;i++) {
        str= a[i];
        }


    strcpy(newnode->word,str);
    newnode->left=NULL;
    newnode->right=NULL;
    temp=root;
    while(temp!=NULL)
    {
        parent=temp;
        if(strcmp(temp->word,str)<0)
            temp=temp->left;
        else
            temp=temp->right;
    }
    if(strcmp(parent->word,str)<0)
        parent->left=newnode;
    else
        parent->right=newnode;
}
void traverse(struct node *temp)
{
    if(temp!=NULL)
    {
        traverse(temp->right);
        cout<<temp->word<<":";
        traverse(temp->left);
    }
}
void search()
{
    struct node *temp;
    temp=root;
    char ab[100];
    cout<<"enter the word to search \n";
    cin>>ab;
    while(temp!=NULL)
    {
        if(strcmp(temp->word,ab)==0)
        {
            cout<<"element found \n";
            break;
        }
        else if(strcmp(temp->word,ab)<0)
        {
            temp=temp->left;
        }
        else if(strcmp(temp->word,ab)>0)
        {
            temp=temp->right;
        }
        else
        {
            cout<<"not found";
        }

    }

}
int main()
{
    ifstream inFile;
    inFile.open("test.txt");


    if(inFile.fail()) {

    cerr << "Error opening file"<< endl ;

    exit(1);

    }

    char x;
    char a[100];
    int count=0,i=0;
    char str;

    while( !inFile.eof()) {
        inFile >> x;
            a[i]=x;
            count++;
            i++;
            }

    for (i=0;i<100;i++){
    cout<< a[i]<<endl;
    }


    int choice;
    while(1)
    {
        cout<<"***menu***\n1.cerate root node\n2.insert a word\n3.traverse\n4.search\n6.Exit\n";
        cout<<"enter your choice \n";
        cin>>choice;
        switch(choice)
        {
            case 1:
                create();
                break;
            case 2:
                insert();
                break;
            case 3:
                traverse(root);
                break;
            case 4:
                search();
                break;
            case 6:
                exit(0);

        }
    }
}


...