Отредактировать текст по заданным правилам - C (СИ)

Узнай цену своей работы

Формулировка задачи:

№ 4. Задать с клавиатуры текст. Отредактировать текст по следующим правилам: перед запятой не может быть пробела; после запятой должен стоять один пробел; не могут стоять подряд две запятые.

Решение задачи: «Отредактировать текст по заданным правилам»

textual
Листинг программы
/* № 4. Задать с клавиатуры текст. Отредактировать текст по следующим правилам:
перед запятой не может быть пробела;
после запятой должен стоять один пробел;
не могут стоять подряд две запятые. */
#include <stdio.h>
#include <locale.h>
int editstr(char* text)
{
size_t textLength = strlen(text);
int i = 0;
char buff[256];
for(i = 1;i < textLength - 1; i++)
    {
        if ((text[i] == ' ')&&(text[i+1] == ','))
        {
            strncpy(buff, text+i+1,textLength);
            strncpy(&text[i], buff,textLength);
        }
 
        if ((text[i] == ',')&&(text[i+1] == ','))
        {
            strncpy(buff, text+i+1,textLength);
            strncpy(&text[i], buff,textLength);
        }
 
 
        if ((text[i] == ',')&&(text[i+1] != ' '))
        {
            strncpy(buff, text+i+1,textLength);
            strncpy(&text[i+2], buff,textLength);
            text[i+1] = ' ';
        }
 
    }
}
 
int main(int argc, char *argv[])
{
  setlocale( LC_ALL,"Russian" );
  printf("Введите текст:");
  char text[256];
  gets(text);
  editstr(text);
  printf("%s",text);
}

Объяснение кода листинга программы

  1. Задание текста в память компьютера с помощью клавиатуры.
  2. Ввод текста в программу с помощью функции gets().
  3. Выделение памяти под буфер для хранения отредактированного текста.
  4. Инициализация переменной textLength значением, равным длине введенного текста.
  5. Создание цикла for для обработки каждого символа исходного текста, начиная со второго символа и заканчивая предпоследним.
  6. Проверка условия: если текущий символ является пробелом и следующий символ является запятой, то выполняется блок кода.
  7. Копирование символов из буфера buff в переменную text, начиная с позиции i+1 и до конца текста.
  8. Проверка условия: если текущий символ является запятой и следующий символ также является запятой, то выполняется блок кода.
  9. Копирование символов из буфера buff в переменную text, начиная с позиции i+1 и до конца текста.
  10. Проверка условия: если текущий символ является запятой и следующий символ не является пробелом, то выполняется блок кода.
  11. Копирование символов из буфера buff в переменную text, начиная с позиции i+2 и до конца текста.
  12. Замена первого символа пробела на запятую.
  13. Вывод отформатированного текста на экран с помощью функции printf().
  14. Функция main() возвращает 0, что означает успешное выполнение программы.
  15. Ввод текста с клавиатуры не проверяется на ошибки.
  16. Программа не обрабатывает ситуацию, когда ввод текста превышает размер буфера.
  17. Программа не обрабатывает ситуацию, когда ввод текста содержит символы, не входящие в диапазон ASCII.
  18. Программа не обрабатывает ситуацию, когда ввод текста содержит символы, не соответствующие требованиям правил форматирования.
  19. Программа не обрабатывает ситуацию, когда ввод текста содержит только пробелы.
  20. Программа не обрабатывает ситуацию, когда ввод текста пустой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы