Программа находит в строке 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), но что исправить...
Этот код должен решать Вашу задачу:
#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;
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей