Помогите упростить задачку...(Паскаль)
Добавлено: 13 ноя 2006, 18:47
Всем привет! Вот написал прогу которая расставляет переносы в строке, в этом примере указаны не все гласные буквы, а суть работает, остается только дописать нехватающие буквы и все, но препод сказал надо более рациональным способом ее решить, а каким - ума не приложу 

Код: Выделить всё
Uses crt;
var
Stroka:String;
y,i,m,Pos:Integer;
Flag2,flag:Boolean;
begin
clrscr;
Writeln('Vvedite stroku');
readln(stroka);
Flag2:=false;
Flag:=false;
For y:=1 to length(stroka) do
begin
{Uslovie 1}
If (Stroka[y]='а') or (Stroka[y]='и') or (Stroka[y]='е') then
If (Stroka[y+1]='а') or (Stroka[y+1]='и') or (Stroka[y+1]='е') then
If y-1<>0 then
If (Stroka[y-1]<>'а') and (Stroka[y-1]<>'и') and (Stroka[y-1]<>'е') then
begin
If (Stroka[y+2]='й') and (y+2<>length(stroka)) then
begin
Insert('-',Stroka,y+1);
flag2:=true;
y:=y+1;
end;
If (Stroka[y+2]<>'й') and (y+2<>length(stroka)) then
begin
Insert('-',Stroka,y+1);
flag2:=true;
y:=y+1;
end;
end;
end;
If (y=length(stroka)) and (flag2=false) then
y:=1;
For i:=y to length(stroka) do
begin
{uslovie 2}
If (Stroka[i]<>'а') and (Stroka[i]<>'и') and (Stroka[i]<>'е') then
If (Stroka[i+1]<>'а') and (Stroka[i+1]<>'и') and (Stroka[i+1]<>'е') then
If (Stroka[i-1]='а') or (Stroka[i-1]='и') or (Stroka[i-1]='е') then
begin
For m:=i+1 to length(stroka) do
If (Stroka[m]='а') or (Stroka[m]='и') or (Stroka[m]='е') then
flag:=true;
If Flag=true then
begin
Insert('-',Stroka,i+1);
flag2:=true;
i:=i+1;
end
end;
end;
If (i>=length(stroka)) and (flag2=false) then i:=1;
For y:=i to length(stroka) do
begin
{Uslovie 3}
If (Stroka[y]='а') or (Stroka[y]='и') or (Stroka[y]='е') then
If y>=2 then
begin
For i:=y+1 to length(stroka) do
If (Stroka[i]='а') or (Stroka[i]='и') or (Stroka[i]='е') then
flag:=true;
If Flag=true then
begin
Insert('-',Stroka,y+1);
end;
end;
end;
Writeln(stroka);
readkey;
end.