Циклическая перестановка букв в словах текста - C (СИ)
Формулировка задачи:
надо составить программу циклической перестановки букв в словах текста так, что i-я буква слова становится i+1-ой, а последняя - первой,заранее спасибо
вот пример- было привет,стало тприве
Решение задачи: «Циклическая перестановка букв в словах текста»
textual
Листинг программы
#include <stdio.h>
#include <stdio.h>
int main() {
char str[] = " You can also:click on; a link in! the move list, to go back? in time and. see what"
" the board looked like just after that move was,,,!! made";
char delim[] = " \t\n,.?!;:", *first, *last, tmp;
int i, j, flag = 0, sym = 1;
for(i = 0; str[i]; i++, sym = 1){
for(j = 0; delim[j]; j++)
if(str[i] == delim[j])
sym = 0;
if(sym){
if(!flag){
first = &str[i];
flag = 1;
}
}
if(!sym || str[i + 1] == '\0'){
if(flag){
last = &str[i - 1];
if(str[i + 1] == '\0')
last = &str[i];
flag = 0;
tmp = *last;
while(last > first){
*last = *(last - 1);
last--;
}
*first = tmp;
}
}
}
puts(str);
return 0;
}
Объяснение кода листинга программы
- В данном коде реализуется функция, которая выполняет циклическую перестановку букв в словах текста.
- В первую очередь, вводится строка, в которой необходимо выполнить перестановку.
- Затем определяется разделитель, который разделяет слова в исходной строке.
- Далее, с помощью двух вложенных циклов, происходит сравнение каждого символа исходной строки с каждым символом разделителя.
- Если символ является разделителем, то переменной
symприсваивается значение 0, иначе 1. - Если значение переменной
symравно 1 и переменнаяflagравна 0, то переменнаяfirstуказывает на текущий символ. - Если значение переменной
symравно 0 или следующий символ является концом строки, то переменнаяlastуказывает на предыдущий символ. - Если переменная
flagравна 1, то происходит перестановка символов между переменнойfirstиlast. - После завершения вложенных циклов, выводится измененная строка.
- В конце функции возвращается 0, что означает успешное выполнение.