В заданной строке заменить все последовательности одинаковых символов длиной более двух на конструкцию - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.545 из 5
Похожие ответы