Вывести в алфавитном порядке слова текста, в которых повторяется первая буква - C#

Узнай цену своей работы

Формулировка задачи:

program PascalGuru;
uses crt;
label 1,2;
var s,zs,zp,gl,slovo,l:string;
    i,j,p,n,nn:integer;
    m:array [1..80] of string;
    b:boolean;
    
procedure exchange(var a,b:string);
var c:string;
begin
c:=a; a:=b; b:=c; end;
{------------------------------------------}

begin
write('Stroka: '); readln(s);
 
zp:='!?*,.'; {все знаки препинания}
zs:='бвгжздйлмнр';
gl:='аоуыэяеёюи';
 {начало разбиения предложения на слова}
 p:=pos(' ',s);
 i:=0;
        repeat
        inc(i);
        slovo:=copy(s,1,p-1);
        if pos(slovo[length(slovo)],zp)<>0 then delete(slovo,length(slovo),1);
        m[i]:=slovo;
        delete(s,1,p);
        p:=pos(' ',s);
        until p=0;
        n:=i+1;
        m[n]:=s;  {массив со словами}
 {--конец разбиения предложения на слова}
 
{************сортировка по алфавиту****************************  }
nn:=n;
repeat
b:=false;
for j:=1 to nn-1 do                  BEGIN
i:=1;
l:=m[j];
s:=m[j+1];
While (I<=5)and(l[i]=s[i]) do inc(i);
If i>5 then writeln('the same')
 else
    if ord(l[i])>ord(s[i]) then begin exchange(m[j+1],m[j]); b:=true; end;
                                  END;
dec(nn);
until not b;
{*************************************************************    }
writeln;
writeln('*Slova teksta, v kotoryh povtoryaetsya pervaya bukva:');
for i:=1 to n do {проход по массиву слов строки}
    begin
    s:=m[i];
    b:=false;
    for j:=2 to length(s) do
     if s[1]=s[j] then b:=true;
    if b then  writeln(s);{выводим}
    end;

{--------------------------------------------------------------------}
writeln;
writeln('*Ostalinye slova (obnovlennye) teksta:');
for i:=1 to n do {проход по массиву слов строки}
    begin
    s:=m[i];
    b:=false;
    for j:=2 to length(s) do
     if s[1]=s[j] then b:=true;
    
     if not b then
        begin
        {удаляем}
        1:
        for j:=1 to length(s) do
        if pos(s[j],zs)<>0 then begin delete(s,j,1); goto 1;  end;
        {дублируем}
        j:=1;
        repeat
        if pos(s[j],gl)<>0 then
           begin
           insert(s[j],s,j);
           inc(j,2);
           end else inc(j);
        until j>length(s);
        
        writeln(s);{выводим обновлённый}
        end;
    end;

readln;
end.
Условие Задачи: Дана строка, содержащая русский текст. Вывести в алфавитном порядке слова текста, в которых повторяется первая буква, в остальных словах удалить звонкие согласные и продублировать гласные буквы. (Звонкие согласные: бвгжздйлмнр)

Решение задачи: «Вывести в алфавитном порядке слова текста, в которых повторяется первая буква»

textual
Листинг программы
Console.Write("Stroka: ");
string s = Console.ReadLine();
 
// разбиения предложения на слова
string[] m = s.Split("!?*,. ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
 
// сортировка по алфавиту
Array.Sort(m);
 
Console.WriteLine("\nSlova teksta, v kotoryh povtoryaetsya pervaya bukva:");
for (var i = 0; i < m.Length; i++)
{
    for (var j = 0; j < m.Length; j++)
    {
        if (i != j && m[i][0] == m[j][0])
        {
            Console.WriteLine(m[i]);
            break;
        }
    }
}
 
Console.WriteLine("\nOstalinye slova (obnovlennye) teksta:");
foreach (char symbol in s)
{
    if ("бвгжздйлмнр".IndexOf(symbol) != -1)
    {
        continue;
    }
 
    Console.Write(symbol);
    if ("аоуыэяеёюи".IndexOf(symbol) != -1)
    {
        Console.Write(symbol);
    }
}
Console.WriteLine();
 
Console.ReadKey(true);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы