Каждую из малых латинских букв, предшествующих первому вхождения символа "*", заменить на цифру 3 - C (СИ)
Формулировка задачи:
Очередная задачка. Заранее благодарю за помощь.
Задачка №2.
Дан текст. Если в тексте нет символа "*", то оставить этот текст без изменения, иначе каждую из малых латинских букв, предшествующих первому вхождения символа "*", заменить на цифру 3. Есть паскалевский код... Но мне наС
надо...s: string;
i,p: integer;
begin
readln(s);
p:=pos('*',s);
if p>0 then
for i:= 1 to p-1 do
if s[i] in ['a'..'z'] then
s[i] := '3';
writeln(s);
end.Решение задачи: «Каждую из малых латинских букв, предшествующих первому вхождения символа "*", заменить на цифру 3»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char buf[BUFSIZ], *asterisk, *pch;
puts("Enter text:");
if(fgets(buf, BUFSIZ, stdin) == NULL)
{
fputs("Input error\n", stdout);
exit(1);
}
for(pch = buf, asterisk = strchr(buf, '*'); asterisk != NULL && pch < asterisk; ++pch)
if(*pch >= 'a' && *pch <= 'z')
*pch = '3';
fputs(buf, stdout);
exit(0);
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream, cstring.
- Объявление переменных:
- buf — массив символов, в который считывается текст;
- asterisk — указатель на первый символ '*';
- pch — указатель на текущий символ в массиве buf.
- Запрос на ввод текста.
- Проверка успешности ввода. Если ввод не удался, выводится сообщение об ошибке и программа завершается.
- Итерация по символам в массиве buf. Если текущий символ меньше или равен 'z', то есть является малой латинской буквой, он заменяется на '3'.
- Вывод измененного текста.
- Завершение программы.