В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово - C (СИ) (72709)
Формулировка задачи:
В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово.
Входные данные:
abcde fghik lmnop
Выходные данные:
edcba kihgf ponml
есть код это прги на паскале, если надо могу скинуть
можно сделать в java но тогда с объяснением(не знаю java) Решение задачи: «В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> void swap(char* a, char* b) { char t = *a; *a = *b; *b = t; } void reverse(char* begin, char* end) { while (begin < end) { swap(begin++, end--); } } int getWord(char* str, char** begin, char** end) { for (; *str && !isalpha(*str); ++str) { ; } *begin = str; for (; *str && isalpha(*str); ++str) { ; } *end = str; return *end - *begin; } char* reverseWords(char* str) { char* p = str; char* begin, * end; while (getWord(p, &begin, &end) > 0) { reverse(begin, end - 1); p = end; } return str; } int main() { char text[] = "abcde fghik lmnop"; printf("%s\n", reverseWords(text)); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются две функции:
swap
иreverse
, которые меняют местами два указателя на символы и переворачивают строку соответственно - В функции
getWord
ищется граница слова в строке, в которую заводятся два указателя:begin
на первый символ слова иend
на последний символ слова - В функции
reverseWords
ищется начало и конец каждого слова в строке, затем вызывается функцияreverse
для переворота каждого слова - В функции
main
создаётся тестовая строка и вызывается функцияreverseWords
, которая переворачивает слова в строке и выводит результат - Возвращаемое значение функции
reverseWords
не используется
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д