Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> строки, задача 
:(
    Опции темы
zall
Дата 18.12.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



Прочитал про строки, не помогло. Дело в том что с++ я изучаю только 2 месяца и нам задали задачку

В строке записаны несколько предложений . Каждое предложение  заканчивается точкой, вопросительным или восклицательным знаками.
1. Вывести на экран только те предложения в которых нет ни 1 цифры
2. Определить длину самой большой последовательности подряд идущих согласных

Это 2 разные программы. В понедельник надо сдавать задачи а что делать я не знаю помогите пожалуйста... Извиняюсь если нарушил правила форума. 
P.S. искал через поиск не нашёл похожего на моё

PM MAIL   Вверх
bsa
Дата 18.12.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Код
#include <vector>
#include <string>
#include <algorithm>

struct IsSentenceEnd
{
  bool operator()(char c) const {
     return (c == '.') || (c == '?') || (c == '!');
  }
};

std::vector<std::string> separateSentence(const std::string &str)
{
   std::vector<std::string> res;
   for(std::string::const_iterator p = str.begin(), c; p != str.end(); p = c) {
      c = std::find_if(++p, str.end(), IsSentenceEnd());
      res.push_back( std::string(p, c) );
   }
   return res;
}
Функция separateSentence разделяет строку на предложения, которые возвращает в виде массива строк.
PM   Вверх
GoldFinch
Дата 18.12.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 6
Всего: 26



Код

void Foo(char * src, char * dst)
{
    char *LnBegin=dst;
    bool NoNumbers=1;
    while (0!=*src)
    {
        if(NoNumbers)
        {
            switch (*src)
            {
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                NoNumbers = 0;
                dst=LnBegin;
                break;
            case '.':
            case '?':
            case '!':
                LnBegin=dst+1;
            default:
                *dst=*src;
                *dst++;
            }
        }
        else
        {
            switch (*src)
            {
            case '.':
            case '?':
            case '!':
                NoNumbers = 1;
                LnBegin=dst+1;
            }
        }
        src++;
    }
    *(dst+1)=0;
}

вместо
case '0':
case '1':
case '2':
...
можно применить if
это оставлено для того чтобы показать ущербрость C(++) по сравнению с паскалем, где это написалось бы как '0'..'9':

Это сообщение отредактировал(а) GoldFinch - 18.12.2008, 23:46
PM MAIL ICQ   Вверх
mes
Дата 18.12.2008, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(GoldFinch @  18.12.2008,  23:44 Найти цитируемый пост)
это оставлено для того чтобы показать ущербрость C(++) по сравнению с паскалем, где это написалось бы как '0'..'9':

gcc поддерживает case '0' ... '9' :  smile 


--------------------
PM MAIL WWW   Вверх
zall
Дата 19.12.2008, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



спасибо всё работает  smile 
PM MAIL   Вверх
bsa
Дата 19.12.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(GoldFinch @ 18.12.2008,  23:44)
можно применить if
это оставлено для того чтобы показать ущербрость C(++) по сравнению с паскалем, где это написалось бы как '0'..'9':

Имхо, его применить нужно. Так как и работать будет быстрее в общем случае, и выглядеть будет нагляднее и лаконичней.
И рекомендую изменить типы параметров на:
Код
void Foo(const char * src, char * dst)
Так как содержимое строки, на которую указывает src, не меняется.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.