решить
Сколько сможите
PASCAL
Зд. 1 Сформировать массив В(4,6) у которого элементы первой стоки равны единицы, второй строки равны двум, третьей строки сумме индексов (сумме номера строки и столбца на пересечении которых стоит элемент), четвёртой строки произведению своих индексов. Вывод созданного массива выполнить в виде таблицы.
Зд. 2 Дан массив D(M, N). Сформировать массив T, элементы которого вычисляются по формуле: T[i,j]= D[I,j]4 – i*j. Вывести оба массива в два столбца.
Зд. 3 Дан массив А(7, 5). Найти:
а) Сумму и произведение всех его элементов;
б) Сумму элементов стоящих в третьей строке;
в) Произведение элементов стоящих в пятом столбце;
г) Суммы элементов стоящих в одной строке, для каждой строки.
Зд. 4 Дан массив B(К), где К чётное число (не забудь вывести в строку для наглядности). Сформировать двумерный массив в котором в первой строке будут находиться элементы массива В стоящие в нём на не чётных позициях, а во второй строке будут находиться элементы массива В стоящие в нём на чётных позициях. Новый массив вывести в виде таблицы.
Зд. 5 Дан произвольный двумерный массив, сформировать из его элементов новый одномерный массив, развернув элементы исходного массива по столбцам.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ArrRandom(11,-29,150); a.Println;
Writeln('Ср.арифм. положительных: ',a.Where(x->x>0).Average:0:3);
Writeln('Ср.арифм. отрицательных: ',a.Where(x->x<0).Average:0:3);
Swap(a[1],a[6]);
Writeln('Результирующий массив'); a.Println
end.
Пример
91 109 113 119 17 95 41 131 -15 117 -14
Ср.арифм. положительных: 92.556
Ср.арифм. отрицательных: -14.500
Результирующий массив
91 41 113 119 17 95 109 131 -15 117 -14
// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!
begin
var w:=ReadlnString.ToWords;
var St:=new Stack <integer>;
var r:=0;
foreach var t in w do
if t[1].IsDigit then St.Push(t.ToInteger)
else begin
var a:=St.Pop;
var b:=St.Pop;
case t[1] of
'+':St.Push(a+b);
'-':St.Push(b-a);
'*':St.Push(a*b)
end;
end;
Writeln(St.Pop)
end.
Контрольный пример
8 9 + 1 7 - *
-102
2. Задача крайне просто решается при регулярного выражения с рекурсией. Фактически вводить количество шаров не нужно, поэтому после ввода оно отбрасывается.
// PascalABC.NET 3.3, сборка 1555 от 21.10.2017
// Внимание! Если программа не работает, обновите версию!
begin
Writeln(ReadlnString.ToWords.Skip(1).JoinIntoString('').
MatchValue('(.)\1{2,}').Length);
end.
Контрольный пример
5 2 3 3 3 1
3