Из входного потока вводится произвольное число строк. Для каждой строки сформировать новую строку, поместив в нее группы символов - C (СИ)
Формулировка задачи:
Доброй ночи! Нужна помощь в написании программы на си, сам, к сожалению, слабо разбираюсь в теме.
Из входного потока вводится произвольное число строк. Для каждой строки сформировать новую строку, поместив в нее группы символов (два или более расположенных подряд одинаковых символа, не совпадающих с пробелом).
В полученной строке группы разделить одним пробелом. Каждая строка представлена массивом символов.
Решение задачи: «Из входного потока вводится произвольное число строк. Для каждой строки сформировать новую строку, поместив в нее группы символов»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- int main(int argc, char* argv[])
- {
- char curr,prev;
- int i,j,l,count;
- char Buf[200];
- while (1)
- {
- for (i=0; i<200; i++) Buf[i]=0;
- scanf("%s",Buf);
- l=strlen(Buf);
- if (l==0) break;
- prev=Buf[0];
- count=1;
- for (i=1; i<l; i++)
- {
- curr=Buf[i];
- if (curr == prev)
- count++;
- else
- {
- if (count > 1)
- {
- for (j=1; j<=count; j++) printf("%c",prev);
- printf(" ");
- }
- count=1;
- }
- prev=curr;
- }
- if (count > 1)
- {
- for (j=1; j<=count; j++) printf("%c",prev);
- printf(" ");
- }
- printf("\n");
- }
- return 0;
- }
Объяснение кода листинга программы
- Вводится произвольное число строк с помощью сканера ввода.
- Для каждой строки формируется новая строка, поместив в нее группы символов.
- Переменная
curr
содержит текущий символ входной строки. - Переменная
prev
содержит предыдущий символ входной строки. - Переменная
count
содержит количество одинаковых символов подряд. - Переменная
l
содержит длину входной строки. - Переменная
Buf
содержит массив символов для хранения входной строки. - Если длина входной строки равна 0, то цикл завершается.
- Если текущий символ равен предыдущему, то счетчик
count
увеличивается. - Если текущий символ не равен предыдущему, то выводится подстрока, образованная предыдущими одинаковыми символами.
- Счетчик
count
сбрасывается в 1. - Если длина входной строки больше 1, то выводится подстрока, образованная предыдущими одинаковыми символами.
- После каждой выведенной подстроки выводится пробел.
- После каждой строки выводится символ новой строки.
- В конце программы возвращается 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д