// PascalABC.NET // Версия 3.3.5 сборка 1662 (29.04.2018)
begin var b := ReadlnString('Введите строку -').ToLower+' '; var (z,r) := (',!?.:;'.ToCharArray,'!.?;'.ToCharArray); var tt:=true; Range(1,b.Length+b.ToCharArray.Where(t->t in z).Count).ForEach(t->if (b[t] in z) and tt then begin Insert(' ', b, t); tt:=false end else tt:=true); var a := b.ToWords; var x := ReadlnChar('Буква -'); var (w, i) := a.Select((w, i)-> (w, i)).Where(t -> t[0].ToString.First.ToLower = x).Reverse.UnZipTuple; i := i.Reverse; foreach var t in w.Zip(i, (p, q)-> (p, q)) do a[t[1]] := t[0]; b := string.Join(' ', a); tt:=true; Range(1,b.Length-b.ToCharArray.Where(t->t in z).Count+1).ForEach(t->if (b[t] in z) and tt then begin Delete(b, t - 1, 1); tt:=false end else tt:=true); b.Println; Println('Количество предложений:',b.ToWords(r).Count); end.
PascalABC.NET 3.4.0, сборка 1675 от 12.06.2018 Внимание! Если программа не работает, обновите версию!
function mean(Self:sequence of real):real; extensionmethod; begin Result:=Self.Average end;
begin var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:'); var a:=MatrGen(n,m,(i,j)->(Random(9000)+1000)/100); Writeln('*** Исходная матрица [',n,',',m,'] ***'); a.Println(6,2); Writeln(6*a.ColCount*'-'); Writeln('Средние значения по четным столбцам'); SeqGen(m div 2,t->2*t-1,1).Select(j->a.Col(j).mean).Println end.
// Версия 3.3.5 сборка 1662 (29.04.2018)
begin
var b := ReadlnString('Введите строку -').ToLower+' ';
var (z,r) := (',!?.:;'.ToCharArray,'!.?;'.ToCharArray);
var tt:=true; Range(1,b.Length+b.ToCharArray.Where(t->t in z).Count).ForEach(t->if (b[t] in z) and tt then begin Insert(' ', b, t); tt:=false end else tt:=true);
var a := b.ToWords;
var x := ReadlnChar('Буква -');
var (w, i) := a.Select((w, i)-> (w, i)).Where(t -> t[0].ToString.First.ToLower = x).Reverse.UnZipTuple;
i := i.Reverse;
foreach var t in w.Zip(i, (p, q)-> (p, q)) do a[t[1]] := t[0];
b := string.Join(' ', a);
tt:=true; Range(1,b.Length-b.ToCharArray.Where(t->t in z).Count+1).ForEach(t->if (b[t] in z) and tt then begin Delete(b, t - 1, 1); tt:=false end else tt:=true);
b.Println; Println('Количество предложений:',b.ToWords(r).Count);
end.
Пример в приложении.
Внимание! Если программа не работает, обновите версию!
function mean(Self:sequence of real):real; extensionmethod;
begin
Result:=Self.Average
end;
begin
var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:');
var a:=MatrGen(n,m,(i,j)->(Random(9000)+1000)/100);
Writeln('*** Исходная матрица [',n,',',m,'] ***');
a.Println(6,2); Writeln(6*a.ColCount*'-');
Writeln('Средние значения по четным столбцам');
SeqGen(m div 2,t->2*t-1,1).Select(j->a.Col(j).mean).Println
end.