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