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

Англо-Латинский и Латинско-Английский словарь

01.05.2019, 23:21. Показов 1093. Ответов 1
Метки нет (Все метки)

В общем, нам дано число n - количество англ слов. Затем в каждой строчке дается само англ. слово и его перевод на Латиницу (Обычный Англо-Латинский словарь).
Необходимо перевести этот словарь в Латинско-Английский. В первой строчке вывести количество латинских слов, затем в каждой строке сами эти слова с их переводами на английский .
Пример:
Ввод
3
apple - malum, pomum, popula
fruit - baca, bacca, popum
punishment - malum, multa
Вывод
7
baca - fruit
bacca - fruit
malum - apple, punishment
multa - punishment
pomum - apple
popula - apple
popum - fruit

На 13 тесте выдает ошибку: Runtime error Segmentation fault (core dumped)
Вот мой код:
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
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <set>
using namespace std;
 
int main()
{
    map <string, set <string>> a;
    vector <string> b(15);
    string s,s1 ="";
    int n,count = 0,z = 0;
    char c;
    cin >> n;
    for (int i = 0; i <= n; i++) {
        count = 0;
        getline(cin, s);                          //считываю строку
        s += " ";
        for (auto c : s) {
            if (c >= 'a' && c <= 'z' && c != '45' && c!=','  ) {  // (45 - это дефис)
                s1 = s1 + c;                // выделяю каждое слово из строки
            }
            else if (s1 !="") {
                b[count] = s1;            // добавляю каждое слово из строки в массив 
                count++;                   // выходит так, что b[0] - английское слово, а остальные - латинские
                s1.clear(); 
            }
        }
        for (int j = 1; j < count; j++) {
            a[b[j]].insert(b[0]);            // добавляю слова в словарь
        }
    }
    for (auto now : a) {
        z++;                                         // считаю количество слов
    }
    cout << z << '\n';                               // вывожу количество слов
    for (auto &now : a)
    {
        cout << now.first << " - ";             // вывод латинского слова
        int x =1;                                       // счетчик для поиска конца множества
        for (auto element : now.second) {
            cout << element;                  // вывод всех переводов латинского слова на английском
            if (x != now.second.size()) {  //ставим запятые пока не встретим последний член множества
                cout << ", ";
                x++;
            }
        }
        cout<< '\n';
    }
 
    
    system("pause");
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2019, 23:21
Ответы с готовыми решениями:

Переделка англо-латинского словаря в латинско-английский
Здравствуйте, уважаемые участники форума. Мне нужна ваша помощь вот по какой задаче с...

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

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

Англо-русский словарь
Прошу вас помочь написать мне программу на Borland C, программа (англо-русский словарь) Вот...

1
4114 / 2337 / 973
Регистрация: 07.02.2019
Сообщений: 6,073
02.05.2019, 00:45 2
maddoger,
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
#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include <cctype>
 
int main()
{
    std::string source
    {
        "apple - malum, pomum, popula\n"
        "fruit - baca, bacca, popum\n"
        "punishment - malum, multa"
    };
 
    std::multimap<std::string, std::string> dict;
    std::istringstream ss{ source };
    std::string s;
    while (std::getline(ss, s))
    {
        std::string sfirst;
        std::string ssecond;
        std::istringstream line(s);
        line >> sfirst >> ssecond;
        while (line >> ssecond)
        {
            while (!ssecond.empty() && !std::isalpha(ssecond.back()))
                ssecond.pop_back();
            dict.insert(std::make_pair(sfirst, ssecond));
        }
    }
    
    for (auto p : dict)
        std::cout << p.second << " - " << p.first << std::endl;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2019, 00:45

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Англо-русский словарь
нужно написать программу &quot;англо-русский и русско-английский словарь&quot; база данных словаря должна...

Англо-русский словарь на С++
Помогите пожалста. Втупляю, немогу придумать ничего дельного. Разработать класс «Граф» для...

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

Класс «англо – русский словарь»
Определите класс «англо – русский словарь». Словарь состоит из различных слов английского языка,...


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

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

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