Удвоить каждое вхождение символа в строку - C (СИ)

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

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

Помогите перекинуть с Паскаля на Си.
var s:string;
     c:char;
begin
writeln('Введите строку');
readln(s);
write('Введите символ ');
readln(c);
for i:=length(s) downto 1 do
if s[i]=c then insert(c,s,i);
write(s);
readln
end.

Решение задачи: «Удвоить каждое вхождение символа в строку»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAX_LEN 80
 
int main()
{
    char s[MAX_LEN], c;
    int i, j, length;
    puts("Enter string: ");
    fgets(s, 40, stdin);
    puts("Enter charachter: ");
    scanf("%c", &c);
    length = strlen(s);
    for (i = 0; i < length; ++i)
    {
        
        if(s[i] == c)
        {
            for (j = strlen(s); j >= i; --j)
                s[j+1] = s[j];
            ++i;
            if (length < MAX_LEN) length = strlen(s);
            else break;
        }
    }
    printf("%s", s);
    
    return 0;
}

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

В этом коде задача состоит в том, чтобы удвоить каждое вхождение определенной буквы в строке. Вот список шагов, которые выполняются в коде:

  1. Входные данные:
    • Строка, введенная пользователем, сохраняется в массив s.
    • Пользователю предлагается ввести символ, который нужно удвоить, и он сохраняется в переменной c.
  2. Определяется длина строки с помощью функции strlen().
  3. Используется цикл for для прохода по каждому символу в строке.
  4. Внутри цикла проверяется, равен ли текущий символ введенному символу.
  5. Если символы совпадают, то:
    • Используется цикл for для перемещения всех символов вправо на одну позицию.
    • Если удвоенный символ не превышает максимально допустимую длину строки, то длина строки увеличивается на 1.
    • Цикл for прерывается, когда встречает символ, который не является дублирующимся.
  6. После завершения циклов выводится обновленная строка.
  7. Код завершается возвратом 0, что означает успешное выполнение.

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

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