Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
gr1nberg
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 20
#1

Строки. ошиьки наборщиков текста - C++

03.05.2011, 19:12. Просмотров 591. Ответов 8
Метки нет (Все метки)

Задача:
Часто встречающаяся ошибка начинающих наборщиков – дважды записанное слово. Обнаружить и исправить такие ошибки.
Можно написать программу для microsoft visual studio

Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2011, 19:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строки. ошиьки наборщиков текста (C++):

Часто встречающаяся ошибка начинающих наборщиков — дважды записанное слово. В заданном текстовом файле обнаружить и исправить такие ошибки в тексте
Часто встречающаяся ошибка начинающих наборщиков — дважды записанное слово. В...

Разработать алгоритм и программу для разбиения текста на строки (как признак конца строки в тексте использовать символ @)
Разработать алгоритм и программу для разбиения текста на строки (как признак...

Ввести строку текста и строку поиска, найти местоположение первого вхождения строки поиска в строку текста
Здравствуйте, не могли бы вы помочь новичку в программировании))) Нужно...

сортировка строки текста
Помогите написать программу, несколько дней уже бьюсь, всё никак не идёт Дана...

Преобразование строки текста
Добрый день всем. Возникла проблема со строками. Напишите код на С,...

Строки (преобразование текста)
Ввести массив строк текста с неизвестным заранее количеством строк и строку...

8
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 19:14 #2
Т.е. "приветпривет" - это ошибка?
0
gr1nberg
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 20
03.05.2011, 19:18  [ТС] #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
Т.е. "приветпривет" - это ошибка?
это не ошибка
пример:
"Привет привет как дела дела"
Вывод правильный ответ такой:
"Привет как дела"
тоесть слова должен разделять какойто знак
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
03.05.2011, 19:29 #4
Вот же, несколько часов назад писали. То, что там выше - согласен, сложно для понимания, но этот код на чистом C, проще не куда.
0
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 19:35 #5
Вот, потестируйте, накатал быстро:
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
#include <iostream>
#include <string>
 
void ChangeString (std::string Str)
{
    std::string S = Str + " ";
    std::string FirstWord, SecondWord;
    while (!S.empty())
    {
        FirstWord.append (S, 0, S.find(" "));
        S.erase(0, S.find(" ") + 1);
        if (!S.empty())
        {
            SecondWord.append(S, 0, S.find(" "));
            if (FirstWord == SecondWord)
                Str.erase(Str.find(SecondWord), SecondWord.length() + 1);
        }
        FirstWord.clear();
        SecondWord.clear();
    }
    std::cout << Str << std::endl;
}
 
int main()
{
    std::string MainString;
    MainString = "hello hello how are are you";
    ChangeString (MainString);
    std::cin.get();
    return 0;
}
Добавлено через 1 минуту
Я плохо, конечно, сделал, что изменил строку пользователя, удаляя слова!
Сохраните в другую переменную, и все дела!

Добавлено через 1 минуту
Странно, работает на всех текстах, которые я ставил!
1
gr1nberg
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 20
03.05.2011, 19:36  [ТС] #6

Я плохо, конечно, сделал, что изменил строку пользователя, удаляя слова!
Сохраните в другую переменную, и все дела!
можно как нибудь более просто написать
просто я первый курс и тока начал изучать нечего не понял что тут написано)))
0
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 19:43 #7
Это код на чистом Си++...
Принцип такой: сначала вырезаем первое слово, затем - второе, если они равны, то вырезаем второе слово из исходной строки, и так в цикле, пока не встретим отличное слово...

Не по теме:

Я сам на первом курсе, в универе только Pascal пока



Добавлено через 2 минуты
Немного оптимизировал:
Замените строку
C++
1
Str.erase(Str.find(SecondWord), SecondWord.length() + 1);
на
C++
1
Str.erase(Str.find(SecondWord + " " + SecondWord), SecondWord.length() + 1);
0
gr1nberg
0 / 0 / 1
Регистрация: 27.12.2010
Сообщений: 20
03.05.2011, 19:48  [ТС] #8
Цитата Сообщение от Mиxaил Посмотреть сообщение
Это код на чистом Си++...
Принцип такой: сначала вырезаем первое слово, затем - второе, если они равны, то вырезаем второе слово из исходной строки, и так в цикле, пока не встретим отличное слово...

Не по теме:

Я сам на первом курсе, в универе только Pascal пока



Добавлено через 2 минуты
Немного оптимизировал:
Замените строку
C++
1
Str.erase(Str.find(SecondWord), SecondWord.length() + 1);
на
C++
1
Str.erase(Str.find(SecondWord + " " + SecondWord), SecondWord.length() + 1);
все равно не понимаю))
0
Mиxaил
534 / 439 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
03.05.2011, 19:54 #9
Строка
Цитата Сообщение от Mиxaил Посмотреть сообщение
while (!S.empty())
означает, что я проверяю, не пуста ли строка...
Строка
Цитата Сообщение от Mиxaил Посмотреть сообщение
FirstWord.append (S, 0, S.find(" "));
означает, что я копирую в FirstWord символы, начиная с 0 по номер вхождения первогопробела в строку S...
Строка
Цитата Сообщение от Mиxaил Посмотреть сообщение
S.erase(0, S.find(" ") + 1);
означает, что из строки S удаляем слово, начинающиеся с начала, и заканчивающееся первым пробелом...
Строка
Цитата Сообщение от Mиxaил Посмотреть сообщение
FirstWord.clear();
означает, что я очищаю строку для дальнейшего использования!

Добавлено через 1 минуту
Если знаете английский, почитайте
About C++, тут все написано...
0
03.05.2011, 19:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2011, 19:54
Привет! Вот еще темы с решениями:

строки. расшифровка текста
Задача: В записке слова зашифрованы — каждое из них записано наоборот....

Добавление текста в конец строки
Здравствуйте. Есть файл, в нём написан текст, нужно добавить строку если место...

Чтение/анализ строки текста
Уважаемые господа, помогите советом. Нужно строку текста (из четного кол-ва...

Перевод из c# в с++: удаление заданного текста из строки
Как это будет выглядеть на с++, все вроде бы понятно, за исключением этого...


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

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

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