// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println; Writeln('Sдубл=',a.GroupBy(c->c).Select(c->(c.Key,c.Count)) .Where(c->c[1]>1).Select(c->c[0]*c[1]).Sum) end.
Const n1=15; n2=10; n3=12; type V=array[1..15] of string; procedure M_in(s:string; var a:V; n:integer); { ввод данных в массив } var i:integer; begin Writeln('Вводите по одному ',n,' элементов массива ',s); for i:=1 to n do Readln(a[i]) end;
procedure M_out(var a:V; n:integer; c:char); { выводит элементы, начинающиеся с указанного символа } var i:integer; begin Writeln('*** Слова на букву ',c,' ***'); for i:=1 to n do if a[i][1]=c then Writeln(a[i]); Writeln end;
var s1,s2,s3:V; begin M_in('S1',s1,n1); M_in('S2',s2,n2); M_in('S3',s3,n3); M_out(s1,n1,'В'); M_out(s2,n2,'Ц'); M_out(s3,n3,'А'); end.
marimelons795
04.02.2020
Незнаю верно ли я все понял, но как вариант можно сделать так //Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(ReadInteger('n='),-20,20); a.Println;
Writeln('Sдубл=',a.GroupBy(c->c).Select(c->(c.Key,c.Count))
.Where(c->c[1]>1).Select(c->c[0]*c[1]).Sum)
end.
Пример
n= 15
1 2 -10 18 8 -18 -8 -6 -11 -7 -10 -11 3 2 2
Sдубл=-36