Ошибки в коде С++

150
01 января 2020, 08:20

Программа находит в строке char последовательности одинаковых символов длинной более 3 символов(кроме пробела) и закидывает эти фрагменты в двумерный массив.

char s[]={"fht nnnnn jejr ttt mcbkurq zzzz     f"};
char c[10][10];
int z=0,l,o,k=0,m,n,q,len=strlen(s) ;
for(int i=0;i<len;i++){                             
    for(int j=i+1;j<len;j++){                           
        if ((s[j]==s[i]) && (s[i]!=' ')){
            for(o=j,l=i; s[o]==s[l];++l,++o){               
                z++;
                if (z>=3){ for(q=0,m=o;q<z;q++){
                    char C=s[m];
                    c[k][q]=C;}k++, z=0;}               }

    }else z=0;}
} 

На выводе получается чепуха еще и с ошибками типа Run time и других, правильно отображается только последовательность ttt . Полагаю, что косяки с момента условия if (z>=3), но что исправить...

Answer 1

Этот код должен решать Вашу задачу:

#include <iostream>
#include <string>
#include <vector>
int main() {
    std::string s{"fht nnnnn jejr ttt mcbkurq zzzz     fffff"};
    std::vector<std::string> res;
    const int SEQ_CNT = 3;
    char c;
    int cnt = 0;
    auto process = [&] {
        if (c != ' ' && cnt >= SEQ_CNT) {
            res.emplace_back(cnt, c);
        }
    };
    auto reset = [&](char new_char) {
        c = new_char;
        cnt = 1;
    };
    for (auto cur_c: s) {
        if (cnt == 0) {
            reset(cur_c);
        } else if (c != cur_c) {
            process();
            reset(cur_c);
        } else {
            ++cnt;   
        }
    }
    process();
    for (auto & s: res) {
        std::cout << s << std::endl;   
    }
}
READ ALSO
Как получить широту и долготу выбранной точки в Arcgis?

Как получить широту и долготу выбранной точки в Arcgis?

Я использую примерТут выводятся положения точки на экране :

134
Ошибка при foreach

Ошибка при foreach

Почему ругается? Хочу пройтись по этим символам циклом

453
C++ порядок инициализации членов-класса

C++ порядок инициализации членов-класса

В каком порядке пройдет инициализация членов класса в С++? Сначала будет вызван конструктор класса или сначала будут проиницилазованы члены-класса?

164
Конвертировать long в char array

Конвертировать long в char array

Мне нужно сконвертировать переменную типа long в char arrayКак это организовать?

163