Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2013, 01:31   #1
DragonSplendor
Новичок
Джуниор
 
Регистрация: 24.12.2013
Сообщений: 1
По умолчанию Работа с текстом

В текстовом файле input.txt записан русский текст. Найти в тексте слова с нечетной длиной (не менее 3), в которых первая, средняя и последняя буквы - гласные, записать их заглавными буквами и указать после каждого такого слова в скобках найденные буквы. Полученный текст записать в файл output.txt. Весь текст, кроме найденных слов, должен остаться неизменным, включая и знаки препинания.

Почему текст не преобразуется?

{В текстовом файле input.txt записан русский текст.Найти в тексте слова
с нечетной длиной (не менее 3),в которых первая,средняя и последняя
буквы-гласные,записать их заглавными буквами и указать после каждого слова
в скобках найденные буквы.Полученный текст записать в файл output.txt.Весь
текст,кроме найденных слов,должен остаться неизменным,включая и знаки
препинания.}

Код:
Program lab12;
var s:string;
f,t:text;

function preobr(s:string):string;
var i,j,p,n,sered:integer;
gl,zp,slovo:string;
m:array [1..80] of string;
begin
zp:='!?*,.';
gl:='аоуыэяеёюи';
{начало разбиения предложения на слова}
p:=pos(' ',s);
i:=0;
repeat
inc(i);
slovo:=copy(s,1,p-1);
m[i]:=slovo;
delete(s,1,p);
p:=pos(' ',s);
until p=0;
n:=i+1;
m[n]:=s; {массив со словами}
{конец разбиения предложения на слова}

for i:=1 to n do {проход по массиву слов строки}
begin
s:=m[i];
{p-будет переменной содержащей длину слова}
if pos(s[length(s)],zp)<>0 then
p:=length(s)-1
else
p:=length(s); {если есть знак препинания,то не учитывать его}
sered:=(p div 2)+1;
if (not odd(p)) or (p<3) then continue; {длина четная или длина<3}
if pos(s[1],gl)=0 then continue; {первая буква не гласная}
if pos(s[sered],gl)=0 then continue; {средняя буква не гласная}
if pos(s[p],gl)=0 then continue; {последняя буква не гласная}

s[1]:=UpCase(s[1]);
s[sered]:=UpCase(s[sered]);
s[p]:=UpCase(s[p]);

m[i]:=s+'('+s[1]+','+s[sered]+','+s[p]+')';

end;
{конец преобразования строки}

s:='';
for i:=1 to n do
s:=s+m[i]+' ';

preobr:=s;
end;

begin
assign(f,'input.txt');reset(f);
assign(t,'output.txt');rewrite(t);

while not eof(f) do
begin
readln(f,s);
writeln(t,preobr(s));
end;

close(f);
close(t);
end.
Допустим,вот такой текст в файле input:
Алгебра - раздел математики,который можно грубо охарактеризовать как обобщение и
расширение арифметики.Слово "алгебра" также употребляется в названиях различных
алгебраических систем.В более широком смысле под алгеброй понимают раздел математики,посвященный изучению
операций над элементами множества произвольной природы,обобщающий обычные операции сложения и умножения
чисел.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.12.2013 в 07:39.
DragonSplendor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом. Marcus75 Паскаль, Turbo Pascal, PascalABC.NET 4 20.12.2011 00:35
Работа с текстом. Andrew101095 Помощь студентам 11 05.03.2011 15:43
работа с текстом в си++ Sjava Помощь студентам 3 21.12.2008 11:54
Работа с текстом wwww Общие вопросы Delphi 5 18.12.2007 17:23