Из входного потока вводится произвольное число строк. Для каждой строки сформировать новую строку, поместив в нее группы символов - 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, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д