Help with word translator

Ok i started another translator this time it translates words i created to and from english, but i have a few errors i cant figure out. there were literally 50 errors and i got it down to about 2 now. any help wpuld be appreciated

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

void translateToZohal()
{
    ifstream fIn;
    ifstream passIn;
    string file_name2;
    string store_text2;
    string zohalchenziin_Words[27] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag","\0"};
    string english_Words[27] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take","\0"};
    int pos = string::npos;
    string space = " ";

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name2);

    fIn.open(file_name2.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text2))
    {
        ss << store_text2 << endl;
    }

    store_text2 = ss.str();


    //Find lower case alphabet
    for(int i = 0; i < 27; i++)
    {
        while((pos = store_text2.find(english_Words[i])) != string::npos)
        {
            store_text2[pos] = zohalchenziin_Words[i];
        }
    }

    ofstream fOut;

    fOut.open(file_name2.c_str());

    fOut << store_text2;

    cout << "File Translated\n" << endl;

    cout << store_text2;

    fOut.close();

    cin.sync();
    cin.get();
}

void translateToEnglish()
{
    ifstream fIn;
    string file_name;
    char space = ' ';
    string store_text;
    string zohalchenziin_Words[27] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag","\0"};
    string english_Words[28] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take","\0"};
    int pos = string::npos;

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name);

    fIn.open(file_name.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text))
    {
        ss << store_text << endl;
    }

    store_text = ss.str();


     for(int i = 0; i < 27; i++)
    {
        while((pos = store_text.find(zohalchenziin_Words[i])) != string::npos)
        {
            store_text[pos] = english_Words[i];
        }
    }

    ofstream fOut2;

    fOut2.open(file_name.c_str());

    fOut2 << store_text;

    cout << "File Translated\n" << endl;

    cout << store_text;

    fOut2.close();

    cin.sync();
    cin.get();
}

void updates()
{
}


int main()
{
    int choice;

    cout << "\n";
    cout << "Zohalchenziin Translator Version 1.0.0 Pre Alpha\n" << endl;

    cout << "What do you want to do?" << endl;
    cout << "1) Translate from english to Zohalchenziin" << endl;
    cout << "2) Translate to english from Zohalchenziin" << endl;
    cin >> choice;

    if(choice == 1)
    {
        translateToZohal();
    }
    else if(choice == 2)
    {
        translateToEnglish();
    }
    else if(choice == 3)
    {
        //updates();
    }
}
Hi,

Are you getting compile or linker errors?
If so, can you please paste them here.
Otherwise, if you have logical errors, can you describe what you are seeing?

Thanks you!
oh crap sorry i forgot the errors!!

||=== Zohalchenziin Translator, Debug ===|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp||In function 'void translateToZohal()':|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp|39|warning: comparison between signed and unsigned integer expressions|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp|41|error: cannot convert 'std::string' to 'char' in assignment|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp||In function 'void translateToEnglish()':|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp|90|warning: comparison between signed and unsigned integer expressions|
C:\Users\Chay\Desktop\Zohalchenziin Translator\main.cpp|92|error: cannot convert 'std::string' to 'char' in assignment|
||=== Build finished: 2 errors, 2 warnings ===|
Hi Ch1156,

The first error:
"|41|error: cannot convert 'std::string' to 'char'"
is because you are comparing a string in zohalchenziin_Words which is an array of strings to a character, since store_text2 is a single string.

The second error at line 92 is the same type of error.
ok so how do i fix it? do i have to make sotre_text2 and array?
Last edited on
The first problem is that I don't know what you are trying to do exactly.
Are you trying to match characters or strings?
strings. The program goes through a text document and find the words and translates them acordingly. so there bothe strings of text.
Okay, all you need to do is remove the index on the single string, store_text2.
1
2
3
4
5
6
7
8
    //  Go through the list of words that we know how to translate.
    for(int i = 0; i < 27; i++)
    {
          if ( store_text2.compare( zohalchenziin_Words[i] ) == 0 )
          {
                //  The strings are the same, you've found the translation.
          }
    }
It doesnt do anything, the words dont get translated, its supposed to find the english words and replace them with the other words.
I'm sorry, but I'm trying to help steer you in the right direction, not write the code for you. You asked for help to fix the error, and now you know how to match the strings.
Think about what you want to do if the strings match and add that code inside of the if block.
And you'll need to make a similar change at line 92 in your code listing.
I dont understand though, its comparing what exactly? I dont even have the slightest idea on what to do next, can you give me more hints?
Last edited on
i tried this from line 93 to 99 but it still doesnt work, am i closer?

1
2
3
4
5
6
7
 for(int i = 0; i < 27; i++)
    {
        if(store_text.compare(zohalchenziin_Words[i]) == 0)
        {
            store_text = english_Words[i];
        }
    }
bump
Can anyone help with this? I get these errors

||=== TalkToMe, Debug ===|
C:\Users\Chay\Desktop\TalkToMe\main.cpp||In function 'void translateToZohal()':|
C:\Users\Chay\Desktop\TalkToMe\main.cpp|39|warning: comparison between signed and unsigned integer expressions|
C:\Users\Chay\Desktop\TalkToMe\main.cpp|41|error: cannot convert 'std::string' to 'char' in assignment|
C:\Users\Chay\Desktop\TalkToMe\main.cpp||In function 'void translateToEnglish()':|
C:\Users\Chay\Desktop\TalkToMe\main.cpp|90|warning: comparison between signed and unsigned integer expressions|
C:\Users\Chay\Desktop\TalkToMe\main.cpp|92|error: cannot convert 'std::string' to 'char' in assignment|
C:\Users\Chay\Desktop\TalkToMe\main.cpp|65|warning: unused variable 'space'|
||=== Build finished: 2 errors, 3 warnings ===|


I tried changing them to chars but that didnt work.

current code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

void translateToZohal()
{
    ifstream fIn;
    ifstream passIn;
    string file_name2;
    string store_text2;
    string zohalchenziin_Words[27] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag","\0"};
    string english_Words[27] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take","\0"};
    int pos = string::npos;
    string space = " ";

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name2);

    fIn.open(file_name2.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text2))
    {
        ss << store_text2 << endl;
    }

    store_text2 = ss.str();


    //Find lower case alphabet
    for(int i = 0; i < 27; i++)
    {
        while((pos = store_text2.find(english_Words[i])) != string::npos)
        {
            store_text2[pos] = zohalchenziin_Words[i];
        }
    }

    ofstream fOut;

    fOut.open(file_name2.c_str());

    fOut << store_text2;

    cout << "File Translated\n" << endl;

    cout << store_text2;

    fOut.close();

    cin.sync();
    cin.get();
}

void translateToEnglish()
{
    ifstream fIn;
    string file_name;
    char space = ' ';
    string store_text;
    string zohalchenziin_Words[27] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag","\0"};
    string english_Words[28] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take","\0"};
    int pos = string::npos;

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name);

    fIn.open(file_name.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text))
    {
        ss << store_text << endl;
    }

    store_text = ss.str();


     for(int i = 0; i < 27; i++)
    {
        while((pos = store_text.find(zohalchenziin_Words[i])) != string::npos)
        {
            store_text[pos] = english_Words[i];
        }
    }

    ofstream fOut2;

    fOut2.open(file_name.c_str());

    fOut2 << store_text;

    cout << "File Translated\n" << endl;

    cout << store_text;

    fOut2.close();

    cin.sync();
    cin.get();
}

void updates()
{
}


int main()
{
    int choice;

    cout << "\n";
    cout << "Zohalchenziin Translator Version 1.0.0 Pre Alpha\n" << endl;

    cout << "What do you want to do?" << endl;
    cout << "1) Translate from english to Zohalchenziin" << endl;
    cout << "2) Translate to english from Zohalchenziin" << endl;
    cin >> choice;

    if(choice == 1)
    {
        translateToZohal();
    }
    else if(choice == 2)
    {
        translateToEnglish();
    }
    else if(choice == 3)
    {
        //updates();
    }
}
Last edited on
Try this ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>

using namespace std;

void translateToZohal()
{
    ifstream fIn;
    ifstream passIn;
	string file_name2;
    string store_text2;
    string zohalchenziin_Words[26] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag"};
    string english_Words[26] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take"};
    int pos = string::npos;
    string space = " ";

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name2);

    fIn.open(file_name2.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text2))
    {
        ss << store_text2 << endl;
    }

    store_text2 = ss.str();


    //Find lower case alphabet
    for(int i = 0; i < 26; i++)
    {
        while((pos = store_text2.find(english_Words[i])) != string::npos)
        {
			store_text2.replace(pos, english_Words[i].length(), zohalchenziin_Words[i]);
        }
    }

    ofstream fOut;

    fOut.open(file_name2.c_str());

    fOut << store_text2;

    cout << "File Translated\n" << endl;

    cout << store_text2;

    fOut.close();

    cin.sync();
    cin.get();
}

void translateToEnglish()
{
    ifstream fIn;
    string file_name;
    char space = ' ';
    string store_text;
    string zohalchenziin_Words[26] = {"an","ad","aft","achan","avaalchenz","am","ang","avem","bezal","bethazragel","chol","chaund","damz","eng","eft","fothurn","hal","imet","kagrenz","kthull","karthall","kauvuul","Kagniivozem","let","left","mag"};
    string english_Words[26] = {"get","go","and","above","mountain","I","A","unholy","ground","life","farm","under","not","you","snow","way","on","massive","always","house","land","terrain","have","are","luck","take"};
    int pos = string::npos;

    cin.ignore(100, '\n');

    cout << "What is the exact name of the file for translation" << endl;
    getline(cin, file_name);

    fIn.open(file_name.c_str());

    stringstream ss(stringstream::in | stringstream::app | stringstream::out);

    while(getline(fIn, store_text))
    {
        ss << store_text << endl;
    }

    store_text = ss.str();


     for(int i = 0; i < 26; i++)
    {
        while((pos = store_text.find(zohalchenziin_Words[i])) != string::npos)
        {
			store_text.replace(pos, zohalchenziin_Words[i].length(), english_Words[i]);
        }
    }

    ofstream fOut2;

    fOut2.open(file_name.c_str());

    fOut2 << store_text;

    cout << "File Translated\n" << endl;

    cout << store_text;

    fOut2.close();

    cin.sync();
    cin.get();
}

void updates()
{
}


int main()
{
    int choice;

    cout << "\n";
    cout << "Zohalchenziin Translator Version 1.0.0 Pre Alpha\n" << endl;

    cout << "What do you want to do?" << endl;
    cout << "1) Translate from english to Zohalchenziin" << endl;
    cout << "2) Translate to english from Zohalchenziin" << endl;
    cin >> choice;

    if(choice == 1)
    {
        translateToZohal();
    }
    else if(choice == 2)
    {
        translateToEnglish();
    }
    else if(choice == 3)
    {
        //updates();
    }
}
Last edited on
thank you, it compiles but now it hangs when i try to translate from the made up words to english, why is that?
bump
bump
Topic archived. No new replies allowed.