В тексте заменить букву, если она стоит на четной позиции - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с строками и файловым вводом-выводом
- Определяем размер буфера в 80 символов
- Инициализируем буфер как пустую строку, добавляя нулевой символ для корректной работы с C-стилем строками
- Инициализируем переменную, отслеживающую количество использованных символов в буфере (с учетом нулевого символа)
- Инициализируем переменную, отслеживающую четность текущего обрабатываемого символа
- Входим в цикл, который будет обрабатывать каждый символ входной строки
- Обновляем значение переменной, отслеживающей четность текущего обрабатываемого символа
- Если текущий символ - 'p' и текущий индекс в буфере четный, то добавляем в буфер строку
ak
, увеличивая при этом использованное количество символов в буфере на 2 - Если текущий символ - 'a' и текущий индекс в буфере нечетный, то добавляем в буфер строку
e
, увеличивая при этом использованное количество символов в буфере на 1 - Если текущий символ не является 'p' или 'a', то добавляем его в буфер, увеличивая при этом использованное количество символов в буфере на 1
- Проверяем, не превышает ли использованное количество символов размер буфера
- Если превышает, то выходим из цикла
- Выводим содержимое буфера на экран
- Возвращаем 0, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д