Помогите решить задачу по си!
Каждую группу из 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);
}
}
}