Оставить только два пробела в строке, если число пробелов больше 3 - C (СИ)

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

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

Добрый вечер. В универе начали недавно изучать СИ. У меня возникли трудности с заданием. Пользователь вводит строку. Суть задания заключается в том, чтобы оставить только два пробела, если число последовательно введенных пробелов превышает цифру(или равно) 3. Если их число меньше 3 , то ничего не делать. Например: input: hello___world__hello_p output: hello__world__hello_p Можете дать какую нибудь идею для реализации или псевдокод

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. char* del_ch(char* s, char c, int n){
  4.     int   i;
  5.     char* p = s, *t = s;
  6.    
  7.     while((*p = *s) != '\0'){
  8.         if(*s == c){
  9.             i = 1;
  10.             do {
  11.                 if(i++ < n)
  12.                     ++p;
  13.                 ++s;
  14.             } while(((*p = *s) != '\0') && (*s == c));
  15.             continue;
  16.         } else
  17.             ++p;
  18.         ++s;
  19.     }
  20.     return t;
  21. }
  22.  
  23. int main(void) {
  24.     char s1[] = "_hello___world__hello_p<br>end_____";
  25.     char s2[] = "     hello,     world    fin";
  26.  
  27.     puts(s1);
  28.     puts( del_ch(s1, '_', 3) );
  29.     putchar('\n');
  30.  
  31.     puts(s2);
  32.     puts( del_ch(s2, ' ', 3) );
  33.     return 0;
  34. }

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

  1. В функции del_ch первым делом инициализируются две переменные: указатель p на первый символ строки s и указатель t на начало строки s.
  2. В цикле while происходит сравнение каждого символа строки s с символом c. Если символы совпадают, то выполняется блок кода, который удаляет все символы c до тех пор, пока не будет найдет символ, не равный c, или пока не будет найдено нужное количество символов c.
  3. В основной функции main сначала выводится исходная строка s1, затем строка, полученная после удаления лишних пробелов _hello___world__hello_p______end_____» с помощью функцииdel_ch, и в конце выводится символ новой строки\n`.
  4. Затем выводится исходная строка s2, затем строка, полученная после удаления лишних пробелов     hello,     world    fin с помощью функции del_ch, и в конце выводится символ новой строки \n.
  5. Функция del_ch возвращает указатель на начало строки s (т.е. на первый символ).

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы