В тексте заменить букву, если она стоит на четной позиции - C (СИ)

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

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

В каждом слове текста заменить "а" на букву "е", если "а" стоит на четном месте, и заменить букву "р" на "ак", если "р" стоит на нечетном месте.

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

textual
Листинг программы
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
 
#define BUF_SIZE 80
 
char buf[BUF_SIZE];
 
int main(int argc, char* argv[])
{
    const char* text = "jlkasjfpakgsdkljgpappajapapapaap";
    buf[0] = '\0'; // насильно нуль-терминируем буфер
    int buf_used = 1; // сколько буфера использовано, учитывая нулевой символ
    bool odd = false;
    char c;
 
    while( c = *text++ ) {
        odd = !odd;
        if( odd && c == 'p' ) {
            buf_used += 2; // length of "ak"
            if( buf_used > BUF_SIZE ) break;
            strcat(buf, "ak");
            continue;
        }
        if ( !odd && c == 'a' ) {
            buf_used += 1; // length of "e"
            if( buf_used > BUF_SIZE ) break;
            strcat(buf, "e");
            continue;
        }
        *(buf + buf_used - 1) = c;
        *(buf + buf_used) = '\0';
        buf_used += 1;
    }
 
    puts(buf);
 
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с строками и файловым вводом-выводом
  2. Определяем размер буфера в 80 символов
  3. Инициализируем буфер как пустую строку, добавляя нулевой символ для корректной работы с C-стилем строками
  4. Инициализируем переменную, отслеживающую количество использованных символов в буфере (с учетом нулевого символа)
  5. Инициализируем переменную, отслеживающую четность текущего обрабатываемого символа
  6. Входим в цикл, который будет обрабатывать каждый символ входной строки
  7. Обновляем значение переменной, отслеживающей четность текущего обрабатываемого символа
  8. Если текущий символ - 'p' и текущий индекс в буфере четный, то добавляем в буфер строку ak, увеличивая при этом использованное количество символов в буфере на 2
  9. Если текущий символ - 'a' и текущий индекс в буфере нечетный, то добавляем в буфер строку e, увеличивая при этом использованное количество символов в буфере на 1
  10. Если текущий символ не является 'p' или 'a', то добавляем его в буфер, увеличивая при этом использованное количество символов в буфере на 1
  11. Проверяем, не превышает ли использованное количество символов размер буфера
  12. Если превышает, то выходим из цикла
  13. Выводим содержимое буфера на экран
  14. Возвращаем 0, что означает успешный конец работы программы

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


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

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

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