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

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

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

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

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

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

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

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

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

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

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
Эксперт С++
4823 / 2997 / 345
Регистрация: 12.12.2009
Сообщений: 7,559
Записей в блоге: 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

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

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

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


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

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

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