Удвоить каждое вхождение символа в строку - 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;
}
Объяснение кода листинга программы
В этом коде задача состоит в том, чтобы удвоить каждое вхождение определенной буквы в строке. Вот список шагов, которые выполняются в коде:
- Входные данные:
- Строка, введенная пользователем, сохраняется в массив s.
- Пользователю предлагается ввести символ, который нужно удвоить, и он сохраняется в переменной c.
- Определяется длина строки с помощью функции strlen().
- Используется цикл for для прохода по каждому символу в строке.
- Внутри цикла проверяется, равен ли текущий символ введенному символу.
- Если символы совпадают, то:
- Используется цикл for для перемещения всех символов вправо на одну позицию.
- Если удвоенный символ не превышает максимально допустимую длину строки, то длина строки увеличивается на 1.
- Цикл for прерывается, когда встречает символ, который не является дублирующимся.
- После завершения циклов выводится обновленная строка.
- Код завершается возвратом 0, что означает успешное выполнение.