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

Тема в разделе "Pascal and Delphi", создана пользователем yaroslavbondarev, 30 ноя 2011.

Статус темы:
Закрыта.
  1. yaroslavbondarev

    yaroslavbondarev Гость

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

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

    Код (Delphi):
    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.
     
  2. yaroslavbondarev

    yaroslavbondarev Гость

    ну кто-нибудь, срочно надо решить :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей