В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию - C (СИ)
Формулировка задачи:
Не могу понять в чем ошибка... Прога не работает... Задание такое: В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию (k)a, где k- количество повторений символа a.
Входные данные:
abbcdddeeffffghh
Выходные данные:
abbc(3)dee(4)fghh
Во время работы программы будут использоваться переменные:
S1 – исходная строка символов
S6 – итоговая строка
S0 – скобки
S – количество одинаковых стоящих рядом символов, первоначальное значение s = 1.
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <string.h>
int main()
{
unsigned int i, n, s;
char str[50], s0,s1,s2,s3,s4,s5,s6;
printf("\nlaboratornaya rabota №5_1");
printf("\nvariant №8");
printf("\nIS-12-2");
printf("\nHamchuk Evgeniy\n");
printf("\nEntrance data\n");
printf("\nEnter a line of symbols:\n");
printf("\n str=");
scanf("%s", str);
s0=("()");
s=1.0;
{
for (i=1.0; i<n; i++)
{
s2=s1[i];
s3=s1[i+1];
s4=s1[i+2];
if (s2==s3)
s++;
if (s3<>s4)
{
if (s>2)
{
str(s, s5);
insert(s5, s0, 2);
s6=concat(s6, s0);
s0=("()");
s=1.0;
}
s6=concat(s6,s2)
}
{
if (s2<>s3)
{
s6=concat(s6,s2);
s=1.0;
}
}
}
}
printf("Target data: ", s6);
}Решение задачи: «В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{ const char *in = "abbcdddeeffffghh";
int len = strlen(in), i = 0, j = 0, found = 0, count = 0;
char out[30];
for (; i<len-2; i++)
{ if(in[i] == in [i+1] && in[i+1] == in [i+2])
{ if(!found)
{ found = 1;
count = 3;
}
else
count++;
}
else
{ if(found)
{ out[j++] = '(';
out[j++] = count + 48;
out[j++] = ')';
found = count = 0;
}
else
out[j++] = in[i];
}
}
if (!found)
{ out[j++] = in[i];
out[j++] = in[i+1];
}
else
{ out[j++] = '(';
out[j++] = count + 48;
out[j++] = ')';
out[j++] = in[i];
}
out[j] = '\0';
puts(out);
getchar();
return 0;
}