Проверка условия: являются ли оба символа пробелами - C (СИ)

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

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

Есть программа на С++
Листинг программы
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <string>
  5. using namespace std;
  6. // Проверка условия: являются ли оба символа пробелами
  7. bool BothAreSpaces(char c1, char c2)
  8. {
  9. return c1 == ' ' && c2 == ' ';
  10. }
  11. int main()
  12. {
  13. string s;
  14. // Читаем строку
  15. getline(cin, s);
  16. // Ищем первый непробел
  17. string::size_type pos1 = s.find_first_not_of(' ');
  18. // Ищем последний непробел
  19. string::size_type pos2 = s.find_last_not_of(' ') + 1;
  20. string s1;
  21. // Копируем часть s от pos1 до pos2 в s1, удаляя последовательно идущие символы, удовлетворяющие условию
  22. unique_copy(s.begin() + pos1, s.begin() + pos2, back_inserter(s1), BothAreSpaces);
  23. // Выводим результат
  24. cout « s1 « endl;
  25. }
Переведите,пожалуйста,ее просто на Си

Решение задачи: «Проверка условия: являются ли оба символа пробелами»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. #define GUESS_MAX_LINE_LENGTH 1024
  4.  
  5. int main(void)
  6. {
  7.     char line[GUESS_MAX_LINE_LENGTH], ch;
  8.     int index, state = 0;
  9.  
  10.     for (index = 0; (ch = getchar()) && ch != '\n' && ch != EOF; )
  11.     {
  12.         if (!state && ch == ' ')
  13.         {
  14.             state = 1;
  15.             line[index++] = ch;
  16.         }
  17.         else if (ch != ' ')
  18.         {
  19.             if (state)
  20.             {
  21.                 state = 0;
  22.             }
  23.             line[index++] = ch;
  24.         }
  25.     }
  26.     line[index] = '\0';
  27.     printf("%s\n", line);
  28. }

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

В этом коде определен массив символов line и переменная index для отслеживания позиции ввода в строке. Переменная state используется для отслеживания текущего состояния ввода. Изначально state равно 0, что означает, что мы ищем начало строки. Когда мы находим пробел и state все еще равно 0, мы переводим state в 1, что означает, что мы ищем конец строки. Когда мы находим символ, который не является пробелом, мы обновляем state на 0, чтобы начать следующую строку. Мы добавляем символы, которые мы находим, в line, увеличивая index на каждом шаге. Когда мы достигаем конца строки, мы добавляем символ новой строки в line и выводим line.

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


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

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

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

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

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

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