Помогите решить задачу по си!

Каждую группу из n рядом стоящих символов * заменить группой из n/2 рядом стоящих символов + (n >= 2); одиночные * копировать в выходной поток без изменения.

Я решил это с массивом, но нужно решить без использования массивов!

char str[80], c;
    int i;
    for (i = 0; i < 80; i++)
    {
        c = getchar();
        str[i] = c;
        if (c == '.')
            break;
    }
    for (i = 0; str[i] != '.'; i++)
    {
        if (str[i] == '*' && str[i + 1] == '*')
        {
            printf("%c", '+');
            i++;
        }
        else
            printf("%c", str[i]);

Ответы (1 шт):

Автор решения: Harry

Так сойдет?

int main()
{
    for(int c = getchar(), n = 0; c != EOF; c = getchar())
    {
        if (c == '*') ++n;
        else
        {
            if (n == 1) putchar('*');
            else if (n > 1)
                for(int i = 0; i < n/2; ++i)
                    putchar('+');
            n = 0;
            putchar(c);
        }
    }
}
→ Ссылка