Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 20.08.2015
Сообщений: 24
1

Выделить английский, русский и украинский текст

24.10.2017, 03:21. Просмотров 605. Ответов 9
Метки нет (Все метки)

Вообщем есть три строки:

English
Русский
Українська

Получилось выделить только English.

Вот код:
C++
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <sstream>
#include <locale>
#include <iomanip>
#include <windows.system.h>
using namespace std;
int main()
{
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "ukr");
    cout << "Change languge\n 1)English \n 2)Russian \n 3)Ukrainian" << endl;
    int e = 0;
    int u = 0;
    int count = 0;
    char S; 
    ifstream f("text.txt");
    while (!f.eof())
    {
        f.get(S);
        count++;
    }
    f.close();
    char * buffeng = new char[count];
    for (int i = 0; i<count; i++) buffeng[i] = NULL;
 
    char *S2 = new char[count]; 
    for (int i = 0; i<count; i++) S2[i] = NULL; 
    ifstream f2("text.txt");  
    int r = 0; 
 
    while (!f2.eof()) 
    {
        f2.get(S2[r]); 
        r++; 
    }
    f2.close();
    int c = 0;
    int a = 0;
 
    cin >> a;
    switch (a) {
    case 1:
        for (e = 0; e < count - 1; e++) {
            for (int i = 65; i <= 122; i++) {
                if (i == 90) {
                i =i+6;
                }
                if (S2[e] == (char)i) {
 
                    buffeng[c] = S2[e];
                    c++;
                }
 
            }
        }
        cout << buffeng;
        break;
    case 2:
        break;
    case 3:
        break;
    }
    
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2017, 03:21
Ответы с готовыми решениями:

Заданы перечни слов различных языков (русский, украинский, английский и немецкий). Требуется определить язык.
Заданы перечни слов русского, украинского, английского и немецкого языков. Требуется запросить у...

Украинский\Русский текст
Как писать по русски и по украински ? cout&lt;&lt;&quot;Russia&quot;; cout&lt;&lt;&quot;Ykraina&quot;; Я знаю, можно запустить...

Русско-английский и англо-русский словарь
Здравствуйте господа программисты! Мне нужна помощь. В курсовой работе есть задание &quot;Создать проект...

Реализовать русско-английский и англо-русский словарь
Надо было реализовать словарь с русского на англ и наоборот. #include &quot;iostream&quot; #include...

9
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 11:47 2
C++
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
using namespace std;
 
const char engAlphabet[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";  
const char ruAlphabet1251[]="\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF"
                        "\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0"
                        "\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1"
                        "\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\xA8\xB8"; 
 
 
int selected_out(char* dest,char *source, int count, int lang){
    int i,j;
    char c;
    switch(lang){
        case 1:
            for (i=0,j=0;i<count;i++){
                c=source[i];
                if (strchr(engAlphabet,c)!=NULL ||  (32>=(unsigned char)c) ){
                    dest[j++]=source[i];
                }
            }
            break;
        case 2:
            for (i=0,j=0;i<count;i++){
                c=source[i];
                if (strchr(ruAlphabet1251,c)!=NULL || (32 >=(unsigned char)c)){
                    dest[j++]=source[i];
                }
            }
            break;
        case 3://TO DO!!
            break;
    }   
    return j;
}
int main()
{
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "ukr");
    cout << "Change languge\n 1)English \n 2)Russian \n 3)Ukrainian" << endl;
        int c = 0;
    int a = 0;
 
    cin >> a;
    int e = 0;
    int u = 0;
    int count = 0;
    char S; 
    ifstream f("text.txt");
    while (!f.eof())
    {
        f.get(S);
        count++;
    }
    f.close();
    cout<<S;
    char * buf_out = new char[count];
    for (int i = 0; i<count; i++) buf_out[i] = 0;
 
    char *S2 = new char[count]; 
    for (int i = 0; i<count; i++) S2[i] = 0; 
    ifstream f2("text.txt");  
    int r = 0; 
 
    while (!f2.eof()) 
    {
        f2.get(S2[r]); 
        r++; 
    }
    f2.close();
 
    selected_out(buf_out ,S2, count, a);
    cout<<buf_out;
    delete [] buf_out;
    delete [] S2;
 
    return 0;
}
1
186 / 174 / 111
Регистрация: 22.06.2009
Сообщений: 533
24.10.2017, 12:06 3
GredoMan, GredoMan, А в text.txt будут содержаться английские\украинские\русские слова вперемешку?
0
0 / 0 / 1
Регистрация: 20.08.2015
Сообщений: 24
24.10.2017, 12:40  [ТС] 4
Спасибо, но компилятор выводит и русскую строку и украинскую.

Возможно ли проверять каждую строку на символы украинского алфавита? То есть если строка содержит укр. символы, вывести её, нет следующую строку проверяем.

Добавлено через 4 минуты
В каждой строке отдельный язык, строка может начинаться как и с русского так и с английского или украинского.
0
125 / 125 / 59
Регистрация: 22.01.2014
Сообщений: 460
24.10.2017, 12:44 5
GredoMan, дело в том что многие символы в русском и украинском алфавитах совпадают. Возможно вы имеете ввиду фильтровать не символы, а слова, тогда нужно создавать словари, делить текст на слова и проверять присутствие слов в алфавите.
0
186 / 174 / 111
Регистрация: 22.06.2009
Сообщений: 533
24.10.2017, 13:25 6
C++
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
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string>
#include <sstream>
#include <locale>
#include <iomanip>
#include <windows.system.h>
using namespace std;
 
bool seekABC(string line, string abc) {
    for (int i = 0; i < abc.length(); i++) {
        if (strchr(line.c_str(), abc[i]) != NULL) {
            return true;
        }
    }
    return false;
}
 
int main()
{
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_ALL, "ukr");
    cout << "Change languge\n 1)English \n 2)Russian \n 3)Ukrainian" << endl;
    
 
        string line;
        ifstream myfile("text.txt");
        string ukAbc = "їієЇІЄ";
        string rusAbc = "йцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ";
        int p;
        
        cin >> p;
        if (myfile.is_open()) { 
            while (getline(myfile, line)) {
                if (p == 1) {
                    if (!seekABC(line, rusAbc) && !seekABC(line, ukAbc))
                        cout << line << endl;
                }
                if (p == 2) {
                    if (seekABC(line, rusAbc) && !seekABC(line, ukAbc))
                        cout << line << endl;
                }
                if (p == 3) {
                    if (seekABC(line, ukAbc) && seekABC(line, rusAbc))
                        cout << line << endl;
                }
                    
                }
            myfile.close();
        } else cout << "Unable to open file";
 
    return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
8159 / 5007 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
24.10.2017, 17:05 7
Цитата Сообщение от GredoMan Посмотреть сообщение
есть три строки
Кодировка какая?
Цитата Сообщение от GredoMan Посмотреть сообщение
languge
language
0
0 / 0 / 1
Регистрация: 20.08.2015
Сообщений: 24
12.11.2017, 16:59  [ТС] 8
ASCII
0
6909 / 5974 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
12.11.2017, 17:36 9
ASCII это первая половина для английского языка. Кодировка неанглийских букв какая? 866, 1251?
0
0 / 0 / 1
Регистрация: 20.08.2015
Сообщений: 24
12.11.2017, 18:07  [ТС] 10
1251
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2017, 18:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Англо-русский и русско-английский переводчик в одном приложении
Имеется программа-переводчик. Реализован перевод с англ. на русский. Есть ли возможность запихать...

Xcode , С++ и русский язык: как вывести в файл русский текст без сбитой кодировки?
Как сделать так, чтобы после некоторых манипуляций в файл выводился русский текст без сбитой...

Английский текст из файла
Здравствуйте! Не могли бы вы помочь с задачей? Вот условие - Написать программу, которая считывает...

пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system ( " echo текст " );
пдскажите функцию которая выводит русский текст на экран и его заголовочный файл с++ но не system (...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.