Помогите Написать Правильно Программу

  • Автор темы yaroslavbondarev
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Y

yaroslavbondarev

#1
Дана строка, содержащая русский текст. Вывести в порядке, обратном к алфавитному, слова текста, содержащие не менее 3-х гласных, в остальных словах удалить гласные и продублировать согласные буквы.

Слабо понимаю в строковых типах данных, написал что смог. Помогите написать правильно программу, а то у меня вышел бред какой-то :O_0:

Код:
program Variant3;
const smax=30;
alf1='АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЫЬЭЮЯ';
alf2='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
glas='аеёиоуыэюя';
sogl='бвгджзйклмнпрстфхцчшщъь'
type mass=array[1..smax] of string;
var					 t,t1:text;
s:string;
a,b:mass;
i,j,k:integer;

{функция удаления гласных}
function GlasnieD( s:string):string;
var i:integer;
begin
i:=1;
while i<=length(s) do
begin
if (pos(ansilowercase(s[i]),glas)>0) then delete(s,i,1)
else i:=i+1;
end;
GlasnieD:=s;
end;

{функция удаления согласных}
function dddd(s:string):string;
var s1:string;
i,j:integer;
begin
s1:='';
for i:=1 to length(s) do
if pos(s[i],sogl)>0 then s1:=s1+s[i]+s[i];
else s1:=s1+s[i]+s[i];
dddd:=s1;
end;


procedure Slova(s:string;var a,b:mass; var j,k:integer);
var									  s,q,w: string;
i:integer;
begin
q:=s+' ';
w:='';
j:=1;
k:=1;
for i:=1 to length(q) do
if (pos(q[i],alf1)>0) or (pos(q[i],alf2)>0) then w:=w+q[i]
else
begin
if w<>'' then begin
if (KolGlas(s)>=3) then
begin
a[j]:=w;
inc(j);
end
else
begin
b[k]:=glasnied(w);
b[k]:=dddd(w);
inc(k);
end;
w:='';
end;
end;
end;

procedure Sortirovka(var a : mass; j : integer);
var								 i,g:integer;
s1,s2,s3:string;
begin
for i:=1 to j-1 do
for g:=i+1 to j do
begin
s1:=ansilowercase(copy(a[i],1,1));
s2:=ansilowercase(copy(a[g],1,1));
if pos(s1,alf2)<pos(s2,alf2) then
begin
s3:=a[i];
a[i]:=a[g];
a[g]:=s3;
end;
end;
end;

begin
reset(t,'rus.txt');
rewrite(t1,'output.txt');
readln(t,s);
slova(s,a,b,j,k);
writeln(t1,'A:');
for i:=1 to j do writeln(t1,a[i]);
writeln(t1,'B:');
for i:=1 to k do writeln(t1,b[i]);
close(t);
close(t1);
end.
 
Статус
Закрыто для дальнейших ответов.