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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
 
char* del_ch(char* s, char c, int n){
    int   i;
    char* p = s, *t = s;
    
    while((*p = *s) != '\0'){
        if(*s == c){
            i = 1;
            do {
                if(i++ < n)
                    ++p;
                ++s;
            } while(((*p = *s) != '\0') && (*s == c));
            continue;
        } else
            ++p;
        ++s;
    }
    return t;
}
 
int main(void) {
    char s1[] = "_hello___world__hello_p<br>end_____";
    char s2[] = "     hello,     world    fin";
 
    puts(s1);
    puts( del_ch(s1, '_', 3) );
    putchar('\n');
 
    puts(s2);
    puts( del_ch(s2, ' ', 3) );
    return 0;
}

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

  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
Похожие ответы