В заданной строке каждое слово заменить количеством букв в этом слове - C (СИ)
Формулировка задачи:
Задание : в заданной строке каждое слово заменить количеством букв в этом слове ) Помогите , в С не шарю , а учитель туман ...
Буду благодарен , за помощь !
Решение задачи: «В заданной строке каждое слово заменить количеством букв в этом слове»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> int word_end(int c); int main() { FILE *in, *out; int count, i, s; in = fopen("in.txt", "r"); out = fopen("out.txt", "w"); count = i = 0; while (!feof(in)) { s = fgetch(in); if (word_end(s)) { if (count > 0) fprintf(out, "%d%c", count, s); count = 0; } } fclose(out); fclose(in); } int word_end(int c) { char *d = ",.!?:;-"; // разделители int i, len = 7; // сколько символов for (i = 0; i < len; i++) { if (c == d[i]) return 1; } return 0; }
Объяснение кода листинга программы
В данном коде заменяется каждое слово в заданной строке на количество букв в этом слове. Список действий:
- Подключение необходимых библиотек
- Определение функции word_end(int c), которая проверяет является ли символ концом слова
- Открытие файлов in.txt и out.txt
- Инициализация переменных count, i, s
- Чтение файла in.txt посимвольно
- Если текущий символ является концом слова (функция word_end(int c) возвращает 1), то записывается в файл out.txt количество букв в этом слове (переменная count) и добавляется текущий символ
- Если текущий символ не является концом слова, то увеличиваем счетчик count на единицу
- Закрытие файлов out.txt и in.txt В функции word_end(int c) происходит следующее:
- Инициализация переменной len равной 7 (длина строки разделителей)
- Перебор символов в строке разделителей
- Если текущий символ строки разделителей равен заданному символу, то функция возвращает 1, иначе продолжает перебор
- Если все символы строки разделителей были проверены, то функция возвращает 0 (символ не является концом слова)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д