Отредактировать текст так, чтобы предложения в тексте разделялись ровно двумя пробелами - C (СИ)
Формулировка задачи:
Дан произвольный текст. Отредактировать текст так, чтобы
а) между словами был ровно один пробел
б)предложения в тексте разделялись ровно двумя пробелами
#include<stdio.h> #include<stdlib.h> #include<string.h> void main() { int i,l,j; char str[100],str1[150]; puts("\n Vvedite stroky: "); gets(str); l=strlen(str); j=0; for(i=0;i<l;i++) { str1[j]=str[i]; if(str[i]==' ' && str[i]==' ') { i++; } if(str[i]=='.'||str[i]=='!'||str[i]=='?') { j++; str1[j]=' '; j++; } j++; } l=strlen(str1); for(i=0;i<l;i++) printf("%c",str1[i]); }
Решение задачи: «Отредактировать текст так, чтобы предложения в тексте разделялись ровно двумя пробелами»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define SEC_ENDS ".!?" #define DELIMS " \t\n" int main(void){ char buf[BUFSIZ], * p; while ( printf("\nString: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) for ( p = strtok(buf, DELIMS); p; p = strtok(NULL, DELIMS) ) printf("%s%s", p, ( strchr(SEC_ENDS, p[strlen(p) - 1]) ) ? " " : " "); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек:
и . - Определение двух констант: SEC_ENDS (конец строки) и DELIMS (разделитель).
- Объявление переменных: buf (буфер для ввода строки) и p (указатель на текущий токен).
- Вход в цикл while, который будет выполняться до тех пор, пока пользователь не введет пустую строку.
- Внутри цикла запрашивается строка у пользователя с помощью функции fgets.
- Далее начинается внутренний цикл for, который будет выполняться для каждого токена в строке.
- В каждой итерации внутреннего цикла выводится текущий токен.
- Если последний символ текущего токена совпадает с одним из символов, указанных в константе SEC_ENDS, то выводится
- Если последний символ текущего токена не совпадает ни с одним из символов, указанных в константе SEC_ENDS, то выводится
- В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д