Форум программистов, компьютерный форум CyberForum.ru

Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз - C++

Восстановить пароль Регистрация
 
xanser
0 / 0 / 0
Регистрация: 29.12.2009
Сообщений: 4
29.12.2009, 18:05     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз #1
Не могу научиться мыслить на c++. Но старательно пытаюсь.... Если бы не традиционное "Завтра сдавать" вряд ли бы и спросил. В общем задача проста: Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в порядке в котором они встречаются в тексте).
Разобрался.
C++
1
2
3
4
5
6
7
8
9
int i,j,fl;
    char str[]="jhb sdjcnweofnlm wefoi-pokas lknlqkmwdqw";
    for(i=0;*(str+i)!=0;i++)
        {
            fl=0;
            for(j=0;*(str+j)!=0;j++)
                 if(*(str+i)==*(str+j) && i!=j)fl=1;
            if (!fl) cout << str[i];
                       }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2009, 18:05     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз
Посмотрите здесь:

Напечатать все слова , которые встречаются в исходной строке ровно один раз C++
Нужно из строки символов удалить символы которые встречаются в нем только один раз C++
Вывести только те слова сообщения, которые встречаются в нем ровно один раз C++
Из предложения напечатать те символы, которые встречаются в нем ровно один раз C++
C++ Из заданного текста выбрать те символы, которые встречаются в нём ровно один раз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
29.12.2009, 18:07     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз #2
Зачем вам класс для функции. Эту функцию можно объявить и пользоваться ей и без класса.
Например:
C++
1
2
3
4
5
6
7
void f()
{    
}
int main ()
{
    f();
}
Можно создать массив int, в котором по индексу хранить количество повторений символа. Например, символ 'a' это 97, вот и хранить по индексу 97 количество повторений 'a'. И так для всех символов.
А при выводе опять посимвольно смотреть строку и одновременно проверять, сколько раз он встречается, если 1, то вывести на экран, если нет, то с мотреть дальше.
xanser
0 / 0 / 0
Регистрация: 29.12.2009
Сообщений: 4
29.12.2009, 18:15  [ТС]     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз #3
2qwert, требуют так оформлять. Интересная идея с массивом. Но в этой то задаче требуется вывести символы, которые встречаются только раз. А значит перебора двумя циклами будет достаточно. Вот если условие расширить до, например, выводить символы, которые встречаются ровно два раза или три, тогда да.
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
29.12.2009, 20:19     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз #4
В вашем решении гороздо больше просмотров в цикле, а в том решении, что предложил я 2 цикла и каждый по 1 просмотру. В более сложной задаче много просмотров в цикле не очень хорошо.
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
29.12.2009, 23:41     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
xanser,

Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз (в порядке в котором они встречаются в тексте).

Вот без сохранения порядка (с сохранением - лень)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <string>
#include <algorithm>
#include <iostream>
#include <locale>
 
int main()
{
   setlocale(LC_ALL, "");
   std::string s = "jhb sdjcnweofnlm wefoi-pokas lknlqkmwdqw";
   std::sort(s.begin(), s.end());
   s.erase(std::unique(s.begin(), s.end()), s.end());
   std::cout << s << std::endl;
 
   return 0;
}
Проверка: http://codepad.org/HlE3Ag5o
Yandex
Объявления
29.12.2009, 23:41     Из заданного текста выбрать и напечатать те символы, которые встречаются в нем ровно один раз
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru