Вывести все последовательности символов из строки - C (СИ)
Формулировка задачи:
Доброго времени суток!
Задача:
Дана строка символов. Признак конца - символ '\n' (перевод строки). Необходимо вывести все одинаковые символы, стоящие рядом.
Решение с ошибкой:
Дело в том, что если вводить последовательность одинаковых символов k и завершать ее другим, не схожим с \n и k, то все работает, как надо. А вот если мы завершим последовательность символов переносом строчки, то программа выведет на экран последовательность без одного символа.
Пожалуйста, помогите
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int sequencedetected=0; //Последовательность найлена = 0 char nowch, nextch; //Символ i, Символ i+1 scanf(" %c", &nextch); //Считываем символ i+1 while(nextch!='\n') //Пока nextch не перенос строки { if(nowch==nextch) //Есди i равен i+1, то { sequencedetected=1; //Обнаружена последовательность printf("%c",nowch); //Печатаем символ i } if((nowch!=nextch)&&(sequencedetected==1)) //Если i не равен i+1 и обнаружена последовательность, то { sequencedetected=0; //Последовательноть не обрънаружена printf("%c",nowch); //Печатаем символ i } nowch=nextch; //Меняем местами i и i+1 scanf(" %c", &nextch); //Считываем новый символ i+1 } return 0; }
Решение задачи: «Вывести все последовательности символов из строки»
textual
Листинг программы
#include <stdio.h> int main() { char a, b = '\0'; int flag1 = 0, flag2 = 0; while((a = getchar()) != '\n'){ if(b){ if(a == b){ flag2 = 0; if(!flag1){ putchar(b); putchar(a); flag1 = 1; } else putchar(a); } else{ if(!flag2){ putchar('\n'); flag2 = 1; } flag1 = 0; } } b = a; } return 0; }
Объяснение кода листинга программы
В этом коде считываются символы из стандартного ввода до конца строки. Если предыдущий символ был не равен текущему, то выводится текущий символ. Если текущий символ равен предыдущему, то выводится предыдущий символ и сбрасывается флаг, который отслеживает текущую последовательность. Если текущий символ не равен предыдущему, то выводится символ новой последовательности. Если достигается конец строки, то выводится символ новой последовательности. Код работает до тех пор, пока не достигнется конец строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д