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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
#1

Подскажите написание начала - C++

29.05.2011, 22:43. Просмотров 328. Ответов 3
Метки нет (Все метки)

Имеется литерная последовательность, состоящая из не более чем 50
слов, в каждом из которых от 1 до 8 литер. Слова разделены одним
или несколькими знаками %
Сформировать из этой литерной последовательности другую литерную
последовательность всеми (сделать функции для каждого из
нижеследующих преобразований в отдельности) описанными ниже способами.
Преобразовывать нужно слова, отличные от последнего слова.
Преобразование заключается в переносе в выходную последовательность
слов, обладающих следующими свойствами:

* в слове нет повторяющихся литер
* каждая литера входит в слово не менее двух раз
* в слове гласные литеры чередуются с согласными
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2011, 22:43     Подскажите написание начала
Посмотрите здесь:

Начала STL и контейнеры C++ - C++
Вот такой вот простенький текст предлагается "Начала STL и контейнеры C++". Скачать свободно можете здесь - и короткие главки (их 21 на...

адресс начала класса - C++
есть к примеру класс: class abc { public: func1(); func2(); }; abc ABC;

Адрес начала строки - C++
Решал задачу на строки. Никак не выходит. Начал проверять каждый фрагмент отдельно. Объясните мне пожалуйста одну вещь. Я хочу получить...

начала разбираться с visual c++ 6.0 - C++
только хотела запустить первую программу и сразу ошибки! C:\Program Files (x86)\Microsoft Visual Studio\MyProjects\1st\aa.cpp(18) : fatal...

Классы в С++ (начала ООПиП) - C++
Тама для тех, кто только начинает освоение объектно-ориентированного проектированяи и программирования. Начнем с классов. Добавлено...

Удаление элемента из начала списка - C++
Есть список, не могу допетрить, как оформить удаление элемента из начала списка. Помогите, пожалуйста, код есть. #include <iostream> ...

Позиция начала строки в консоли... - C++
Вопрос такой, как сделать нестандартную позицию начала строки... Тоесть у меня есть приложение где слева навигация а справа содержание...

Найти номер N дня с начала года - C++
Скоро последний день сдачи очень прошу, помогите (Вы явно сечете в этом). 1. Заданы три числа D, M, Y, которые обозначают число, месяц и...

Найти номер дня с начала года - C++
Помогите решить задачу пожалуйста Заданы три числа D, M, Y, которые обозначают число, месяц и год. Найти номер N этого дня с начала...

Определить адрес начала стека потока - C++
Приветствую! Суть задачи такова: для любого потока нужно уметь найти адрес его стека и размер. Интересует винда. Нужны идеи, как это...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
29.05.2011, 23:21
  #2

Не по теме:


предлагаю начать со ставших уже классическими строк:

C++
1
2
3
4
#include <iostream>
#include <string>
 
int main(int argc, char *argv[]) {

vladislav5
0 / 0 / 0
Регистрация: 29.05.2011
Сообщений: 48
30.05.2011, 13:27  [ТС]     Подскажите написание начала #3
да это смешно) первый цикл интересует)
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
31.05.2011, 00:11     Подскажите написание начала #4
Ну вот так можешь начать.
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
#include <ctime>
#include <cstdlib>
#include <sstream>
#include <iterator>
#include <iostream>
#include <string>
#include <vector>
 
std::vector<std::string> split(std::string &string, char delimiter) {
  std::stringstream ss(string);
  std::vector<std::string> result;
  std::string token;
  while (std::getline(ss, token, delimiter)) {
    if (token != "")
      result.push_back(token);
  }
  return result;
}
 
template <class IteratorOne, class IteratorTwo,
          class Predicate, class OutputIterator>
void copy_if(IteratorOne begin, IteratorTwo end,
             Predicate predicate, OutputIterator output) {
  for(; begin != end; ++begin)
    if (predicate(*begin))
      *output++ = *begin;
}
 
struct Condition {
  std::string last_word;
  Condition(const std::string &last_word_) : last_word(last_word_) {}
  bool operator()(const std::string &word) {
    return (word != last_word &&
            (has_repeating(word) ||
             has_many(word) ||
             has_changing(word)));
  }
  bool has_repeating(const std::string &word) {
    // тут надо осуществить проверку на то, что
    // в слове нет повторяющихся литер
    return true;
  }
  bool has_many(const std::string &word) {
    // тут надо осуществить проверку на то, что
    // каждая литера входит в слово не менее двух раз
    return true;
  }
  bool has_changing(const std::string &word) {
    // тут надо осуществить проверку на то, что
    // в слове гласные литеры чередуются с согласными
    return true;
  }
};
 
int main(int argc, char *argv[]) {
  std::srand(std::time(NULL));
 
  std::string source, destination;
  for (int i = 45 + rand() % 10; i > 0; --i) {
    for (int j = 1 + rand() % 8; j > 0; --j)
      source += 'a' + rand() % ('f' - 'a' + 1);
    for (int j = 1 + rand() % 4; j > 0; --j)
      source += '%';
  }
  std::cout << source << std::endl;
 
  std::vector<std::string> words = split(source, '%');
 
  copy_if(words.begin(), words.end(), Condition(*(words.end() - 1)),
          std::ostream_iterator<std::string>(std::cout, " "));
 
  return 0;
}
Yandex
Объявления
31.05.2011, 00:11     Подскажите написание начала
Ответ Создать тему
Опции темы

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