Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 25.01.2019
Сообщений: 1

Подчеркнуть слова не содержащиеся в словаре

26.01.2019, 13:42. Показов 1508. Ответов 4

Студворк — интернет-сервис помощи студентам
Извините что не написал хоть строчки кода, но очень плохо разобрался с типом string
Входные данные должны быть такие
В первой строке входных данных даётся непустая строка s, длина которой не превосходит 1000000. Символы строки имеют ASCII-коды от 32 до 126 включительно.

Во второй строке находится натуральное число n (1≤n≤100) — количество слов в словаре, который встроен в Macrohard Letter.

В следующих n строках расположены слова, содержащиеся в словаре. Каждое из слов в словаре состоит только из строчных латинских букв, содержит хотя бы одну букву, а суммарная длина всех слов не может превышать 1000000 символов.
Выходные данные
Задача требует вывести строчку s, а во второй строке вывести строку, состоящую из двух символов «~» и «.».
Символ «~» обозначает, что соответственный символ в строке s подчёркнут, а «.», соответственно, не подчёркнут.

Примечания
При решении данной задачи требуется использовать тип данных std::string.

Примеры
входные данные
The quick brown fox jumps over the lazy dog
5
quick
the
lazy
dog
jumps
выходные данные
The quick brown fox jumps over the lazy dog
..........~~~~~.~~~.......~~~~.......... ...

Заранее благодарю за помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.01.2019, 13:42
Ответы с готовыми решениями:

Для заданного длинного слова найти в словаре все слова
Для заданного длинного слова найти в словаре все слова, в которых использованы только буквы, которые присутствуют в заданном слове ...

Подчеркнуть слова чётной длины, а также установить для них заданный размер шрифта
В выделенном абзаце подчеркнуть те слова, длина которых выражается чётным числом, а также установить для них размер шрифта в 20 пт.

Дано два слова Определите какое из них размещено в словаре раньше
Заданo два слова Определите какое из них размещено в словаре раньше помогите сделать в С ++

4
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,161
26.01.2019, 19:13
Ничего сложного в задаче нет:

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
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
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cfenv>
#include <cinttypes>
#include <cstdint>
#include <cwchar>
#include <cwctype>
 
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
 
using namespace std;
 
#define int long long int 
 
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cout.precision(9);
 
  string s;
  getline(cin, s);
 
  int n;
  cin >> n;
 
  map<string, bool> has;
  for (int i = 0; i < n; ++i) {
    string word;
    cin >> word;
 
    has[word] = true;
  }
 
  cout << s << '\n';
 
  string word;
 
  for (const auto& i : s) {
    if (i == ' ') {
      transform(cbegin(word), cend(word), begin(word), ::tolower);
 
      if (has[word]) {
        cout << string(word.length(), '.');
      } else {
        cout << string(word.length(), '~');
      }
 
      cout << '.';
 
      word.clear();
    } else {
      word += i;
    }
  }
 
  if (has[word]) {
    cout << string(word.length(), '.');
  } else {
    cout << string(word.length(), '~');
  }
}
1
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
26.01.2019, 19:32
Как вариант.
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
#include <algorithm>
#include <iostream>
#include <string>
#include <set>
 
std::string tolower(std::string str) {
    std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c) {
        return std::tolower(c);
    });
    return str;
}
 
int main() {
    std::string str;
    getline(std::cin, str);
 
    size_t n;
    std::cin >> n;
 
    std::set<std::string> dict;
    for (size_t i = 0; i < n; i++) {
        std::string word;
        std::cin >> word;
        dict.insert(word);
    }
 
    std::cout << str << std::endl;
 
    size_t left = 0;
    while(str[left]) {
        // Пропустить пробелы.
        while (str[left] == ' ') {
            std::cout << '.';
            left++;
        }
 
        if (str[left]) { // Если не достигнут конец строки.
            // Найти конец слова.
            size_t right = left;
            while (str[right] && (str[right] != ' ')) {
                right++;
            }
 
            // Проверить наличие слова в словаре.
            bool foundInDict = (dict.find(tolower(str.substr(left, right - left))) != dict.end());
            // Выполнить подчеркивание в соответствии с результатами проверки.
            std::cout << std::string(right - left, foundInDict ? '.' : '~');
            left = right;
        }
    }
 
    return 0;
}
1
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,332
27.01.2019, 15:00
valen10, в какой среде можно скомпилировать ваш код?
0
Параллельный Кот
 Аватар для valen10
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
27.01.2019, 15:21
Цитата Сообщение от isaak Посмотреть сообщение
в какой среде можно скомпилировать ваш код?
В любой, где есть поддержка C++11, если добавить забытый заголовок #include <cctype>. Можно внести еще одно изменение (условие задачи позволяет), чтобы избавиться от необходимости нового стандарта.

Исправленный вариант
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
#include <algorithm>
#include <cctype>
#include <iostream>
#include <string>
#include <set>
 
std::string tolower(std::string str) {
    std::transform(str.begin(), str.end(), str.begin(), static_cast<int(*)(int)>(std::tolower));
    return str;
}
 
int main() {
    std::string str;
    getline(std::cin, str);
 
    size_t n;
    std::cin >> n;
 
    std::set<std::string> dict;
    for (size_t i = 0; i < n; i++) {
        std::string word;
        std::cin >> word;
        dict.insert(word);
    }
 
    std::cout << str << std::endl;
 
    size_t left = 0;
    while(str[left]) {
        // Пропустить пробелы.
        while (str[left] == ' ') {
            std::cout << '.';
            left++;
        }
 
        if (str[left]) { // Если не достигнут конец строки.
            // Найти конец слова.
            size_t right = left;
            while (str[right] && (str[right] != ' ')) {
                right++;
            }
 
            // Проверить наличие слова в словаре.
            bool foundInDict = (dict.find(tolower(str.substr(left, right - left))) != dict.end());
            // Выполнить подчеркивание в соответствии с результатами проверки.
            std::cout << std::string(right - left, foundInDict ? '.' : '~');
            left = right;
        }
    }
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2019, 15:21
Помогаю со студенческими работами здесь

Дана строка. Вывести все слова, содержащиеся в строке, в столбец.
3)Дана строка. Вывести все слова, содержащиеся в строке, в столбец.

Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей
Дано три строки,нужно вывести первую,удалив из нее гласные,содержащиеся во второй и удвоив согласные,содержащиеся в третьей Например:...

Проверить, что все слова заданной строки упорядочены в лексикографическом порядке (как в словаре)
Проверить, что все слова заданной строки упорядочены в лексикографическом порядке (как в словаре). помогите решить задачку на с++ :cry:

В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря
В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря с помощью конкатенации,...

В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря
В файле-словаре найти и распечатать слова, которые могут быть полностью составлены из других слов словаря с помощью конкатенации,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru