Строка: напечатать слова, которые удовлетворяют следующему свойству: в слове нет повторяющихся букв

N-Dubz

Доброго времени суток. помогите написать программу в С++. Дан текст. Напечатать те слова, которые удовлетворяют следующему свойству: в слове нет повторяющихся букв.
5 ответов

N-Dubz

Ввод со стандартного ввода, вывод в стандартный вывод.
#include <iterator>
#include <iostream>
#include <istream>
#include <string>
#include <functional>
 
template <class InputIterator, class OutputIterator, class Predicate>
OutputIterator copy_if(InputIterator first, InputIterator last,
  OutputIterator result, Predicate pred) {
  while(first!=last) {
    if(pred(*first)) {
      *result++ = *first;
    }
    ++first;
  }
  return result;
}
 
bool hasNoRepeatingLetters(const std::string &word) {
  unsigned char *bits = new unsigned char[32]();
  for (std::string::const_iterator i = word.begin();
    i != word.end(); ++i) {
    if (bits[*i / 8] & (1 << (*i % 8))) {
      return false;
    }
    bits[*i / 8] |= 1 << (*i % 8);
  }
  return true;
}
 
int main(int argc, char *argv[]) {
 
  copy_if(std::istream_iterator<std::string>(std::cin),
    std::istream_iterator<std::string>(),
    std::ostream_iterator<std::string>(std::cout, "\n"),
    hasNoRepeatingLetters);
 
  std::cin.get();
  return 0;
}


N-Dubz

Доброго времени суток. помогите написать программу в С++. Дан текст. Напечатать те слова, которые удовлетворяют следующему свойству: в слове нет повторяющихся букв.
#include <string>
#include <iostream>
using namespace std;
 
bool isSingleChars(string word);
 
int main()
{
    string text;
    string word;
    char chEnd = 0;
    //Цикл ввода
    cout<<"Input   : ";
    while(chEnd != '\n')
    {
        chEnd = cin.get();
        if(isspace(chEnd) || chEnd == '\n' )
        {
            if(isSingleChars(word))
                text += word + chEnd;
            word = "";
        }
        else
            word += chEnd;
    }
    cout<<"Output : "<<text<<endl;
    cin.get();
    return 0;
}
 
bool isSingleChars(string word)
{
    size_t   count = 0;
    size_t   fpos  = 0;
    for(size_t pos = 0; pos < word.length(); pos++)
    {
        for
        (
            fpos = word.find(word[pos], 0); 
            fpos != string::npos; 
            fpos = word.find(word[pos], fpos + 1)
        )
            count++;
    }
    //слово состоит из разных символов если кол-во 
    //встречаемых символов равно длинне слова
    return count == word.length();
}


N-Dubz

На какой оси? Принтер от этого очень зависим.


N-Dubz

На какой оси? Принтер от этого очень зависим.
Бред.
Здравствуйте. помогите написать программу на языке С++. дан текст. напечатать те слова которые удовлетворяют следующему свойству, в слове нет повторяющихся букв
Пользуйтесь поиском. Напечатать те слова строки, в которых нет повторяющихся букв


N-Dubz

#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
 
int main()
{
    std::string s = "Very const big biggest tree long";
    std::istringstream iss(s);
    for (std::string comp; iss>>s; iss)
    {
        comp = s;
        std::sort(comp.begin(), comp.end());
        if (std::adjacent_find(comp.begin(), comp.end()) == comp.end())
            std::cout<<s<<" ";
    }
    std::cout<<'\n';
    
    return 0;
}