Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2008, 13:19   #1
ampolez
Новичок
Джуниор
 
Регистрация: 15.12.2008
Сообщений: 2
По умолчанию Нахождение серий символов в строке

Приветствую, господа кодеры!

При написании диплома появилась некоторая проблемка:

Есть строка нулей и едениц (случайно расставлены). Нужно в ней найти количество серий этих нулей и едениц,
т.е. подряд идущих одинаковых символов.

Написал функцию, которая в качестве аргументов берет саму строку, маску символа (ноль или еденица) и длинну серии.
Функция должна возвращать количество серий масочного символа, указанной длинны в строке.
Тока что-то она плохо это делает: считает как-то через раз и ИНОГДА забывает про первые и последние символы в строке.
Есть-ли какие-нить идеи, как это можно ещё реализовать?

Написано на devcpp. Думаю все должно быть понятно.
Код:
int SeriesFind(wxString sequence, wxChar mask, int ser_length) {
    int counter = 0,
        dig_counter = 0;
    wxString tmp;
    wxChar cSymb, pSymb, nSymb;

    for(int i = 0; i < sequence.Len(); i++) {
        cSymb = sequence.GetChar(i);
        nSymb = sequence.GetChar(i+1);
        pSymb = sequence.GetChar(i-1);

        if(cSymb == mask) {
            if(cSymb == pSymb) dig_counter++;
            else dig_counter = 0;
            if(dig_counter == ser_length && nSymb != mask) {
                counter++;
                dig_counter = 0;
            }
        }
    }
    return(counter);
}
Очень надеюсь на вашу помощь!
ampolez вне форума Ответить с цитированием
Старый 17.12.2008, 15:56   #2
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

> wxChar

1й раз вижу такой тип... Как он вообще с обычным char соотносится? (Ну или с wchar)

Для обычных char процедура выглядит так примерно:

Код:
#include <string.h>
#include <stdlib.h>

// ...


int SeriesFind(const char* sequence, char mask, int s_len)
{
	char* tmp;
	char* s;
	int res = 0;

	s = (char*)malloc((s_len+1)*sizeof(char));
	strnset(s,mask,s_len);
	s[s_len] = 0;

	for(tmp = sequence; *tmp & (tmp = strstr(tmp,s));tmp+=1) res++;

	free(s);
	return res;
}
theos вне форума Ответить с цитированием
Старый 19.12.2008, 22:20   #3
ampolez
Новичок
Джуниор
 
Регистрация: 15.12.2008
Сообщений: 2
Хорошо

спасибо, вопрос решён!
ampolez вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество символов в строке Ivan357 Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2008 17:06
изменение порядка следования символов в строке Arteom Помощь студентам 4 10.10.2008 09:34
Вывод символов в строке Karl_Karlovi4 БД в Delphi 12 03.06.2008 13:31
Подсчет количества заданных символов в строке Mihailo Помощь студентам 3 23.12.2007 11:58
кол-во букв в строке символов (Си) Newman Помощь студентам 1 04.12.2007 02:19