Программу С++ нужно переделать в С - C (СИ)

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

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

#include <iostream>
#include <string>
#include <cctype>
 
int main()
{
    std::string str ;
    std::getline ( std::cin , str ) ;
    for ( std::string::size_type i = 0 ; i < str.size() ; ++i )
    {
        if ( std::ispunct ( str[i] ) && (i+1)<str.size() && !std::isspace(str[i+1]) )
        {
            str.insert(++i," ") ;
        }
    }
    std::cout << "\n" << str << std::endl ;
}

Решение задачи: «Программу С++ нужно переделать в С»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
enum constants {
    MAX_LEN = 1024
};
 
int main() {
    char line[MAX_LEN];
    char result[MAX_LEN+MAX_LEN];
    size_t i,j;
    fgets(line, MAX_LEN, stdin);
    for(i = 0, j = 0; line[i]; ++i, ++j) {
        result[j] = line[i];
        if(ispunct(line[i]) && line[i + 1] && (!isspace(line[i + 1]))) {
            result[++j] = ' ';
        }
    }
    result[j] = 0;
    fputs(result, stdout);
    return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами, строками и массивами.
  2. Объявление переменной constants типа enum, которая содержит константу MAX_LEN равную 1024.
  3. Создание двух переменных типа char: line и result.
    • line используется для хранения строки, которую вводит пользователь.
    • result используется для хранения результата обработки строки из пункта 4.
  4. Создание двух переменных типа size_t: i и j, которые используются в цикле.
    • Переменная i используется для индексации строки line.
    • Переменная j используется для индексации строки result.
  5. Считывание строки от пользователя с помощью функции fgets().
  6. Начало цикла, который проходит по каждому символу строки line.
  7. В каждой итерации цикла символ line[i] копируется в соответствующую позицию в строке result.
  8. Если текущий символ является знакам пунктуации и следующий символ не является пробелом, то в следующую позицию в строке result записывается пробел.
  9. После окончания цикла в последнюю позицию строки result записывается нулевой символ, который обозначает конец строки.
  10. Результат выводится на экран с помощью функции fputs().
  11. Программа завершается, возвращая 0 в качестве кода выхода.

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


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

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

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