В заданной строке каждое слово заменить количеством букв в этом слове - C (СИ)

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

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

Задание : в заданной строке каждое слово заменить количеством букв в этом слове ) Помогите , в С не шарю , а учитель туман ... Буду благодарен , за помощь !

Решение задачи: «В заданной строке каждое слово заменить количеством букв в этом слове»

textual
Листинг программы
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int word_end(int c);
  5.  
  6. int main() {
  7.     FILE *in, *out;
  8.     int count, i, s;
  9.     in = fopen("in.txt", "r");
  10.     out = fopen("out.txt", "w");
  11.  
  12.     count = i = 0;
  13.     while (!feof(in)) {
  14.         s = fgetch(in);
  15.         if (word_end(s)) {
  16.             if (count > 0) fprintf(out, "%d%c", count, s);
  17.             count = 0;
  18.         }
  19.     }
  20.     fclose(out);
  21.     fclose(in);
  22. }
  23.  
  24. int word_end(int c) {
  25.     char *d = ",.!?:;-"; // разделители
  26.     int i, len = 7; // сколько символов
  27.     for (i = 0; i < len; i++) {
  28.         if (c == d[i]) return 1;
  29.     }
  30.     return 0;
  31. }

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

В данном коде заменяется каждое слово в заданной строке на количество букв в этом слове. Список действий:

  1. Подключение необходимых библиотек
  2. Определение функции word_end(int c), которая проверяет является ли символ концом слова
  3. Открытие файлов in.txt и out.txt
  4. Инициализация переменных count, i, s
  5. Чтение файла in.txt посимвольно
  6. Если текущий символ является концом слова (функция word_end(int c) возвращает 1), то записывается в файл out.txt количество букв в этом слове (переменная count) и добавляется текущий символ
  7. Если текущий символ не является концом слова, то увеличиваем счетчик count на единицу
  8. Закрытие файлов out.txt и in.txt В функции word_end(int c) происходит следующее:
  9. Инициализация переменной len равной 7 (длина строки разделителей)
  10. Перебор символов в строке разделителей
  11. Если текущий символ строки разделителей равен заданному символу, то функция возвращает 1, иначе продолжает перебор
  12. Если все символы строки разделителей были проверены, то функция возвращает 0 (символ не является концом слова)

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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