Задачка PascalABC.net Очень нужна помощь!В заданой матрице размер которой показывает
ЗАДАЧА PascalABC.net Очень нужна помощь!
В заданой матрице размер которой показывает юзер, а элементы образуются случайным образом: посчитать количество столбцов, в которых схожие суммы частей.
2 ответа
Ульяна Литварь
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017
// Внимание! Если программка не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Начальная матрица ***');
var a:=MatrRandom(m,n,10,20);
a.Println(3); Writeln(3*a.ColCount*'-');
var k:=a.Cols.Select(col-gt;col.Sum).GroupBy(t-gt;t)
.Select(t-gt;(t.Key,t.Count)).Where(t-gt;t[1]gt;1).Sum(t-gt;t[1]);
Writeln('Разыскиваемое количество столбцов: ',k)
end.
Пример
Количество строк и столбцов в матрице: 4 15
*** Исходная матрица ***
12 13 15 17 16 17 19 19 13 18 15 14 10 10 15
15 17 15 10 18 13 11 17 14 19 15 10 15 17 19
15 16 14 14 20 10 20 16 20 13 12 16 20 10 13
16 17 17 13 19 15 20 11 13 17 11 17 10 18 11
---------------------------------------------
Разыскиваемое количество столбцов: 7
Программка короткая, но в ней есть часть, осознание которой может быть затруднено. Поэтому ниже приводится эта же программка, в которой один из операторов разбит на несколько с выдачей промежных результатов.
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Начальная матрица ***');
var a:=MatrRandom(m,n,10,20);
a.Println(3); Writeln(3*a.ColCount*'-');
// по шажкам
var s1:=a.Cols.Select(col-gt;col.Sum);
Writeln('Суммы поколонно:'); s1.Println;
var s2:=s1.GroupBy(t-gt;t);
Writeln('Группировка сумм:'); Writeln(s2);
var s3:=s2.Select(t-gt;(t.Key,t.Count));
Writeln('То же, формат "значение, количество":'); Writeln(s3);
var s4:=s3.Where(t-gt;t[1]gt;1);
Writeln('Оставляем только суммы с повторами:'); Writeln(s4);
var k:=s4.Sum(t-gt;t[1]);
Writeln('Искомое количество столбцов: ',k)
end.
Пример
Количество строк и столбцов в матрице: 4 15
*** Начальная матрица ***
11 11 16 15 17 13 15 14 11 18 20 16 15 15 15
20 17 10 18 18 14 11 19 16 13 16 18 16 10 12
16 20 10 13 12 14 16 19 11 16 19 16 17 12 12
19 12 12 11 10 14 18 10 15 11 10 13 10 11 10
---------------------------------------------
Суммы поколонно:
66 60 48 57 57 55 60 62 53 58 65 63 58 48 49
Сортировка сумм:
[[66],[60,60],[48,48],[57,57],[55],[62],[53],[58,58],[65],[63],[49]]
То же, формат "значение, количество":
[(66,1),(60,2),(48,2),(57,2),(55,1),(62,1),(53,1),(58,2),(65,1),(63,1),(49,1)]
Оставляем только суммы с повторами:
[(60,2),(48,2),(57,2),(58,2)]
Разыскиваемое количество столбцов: 8
// Внимание! Если программка не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Начальная матрица ***');
var a:=MatrRandom(m,n,10,20);
a.Println(3); Writeln(3*a.ColCount*'-');
var k:=a.Cols.Select(col-gt;col.Sum).GroupBy(t-gt;t)
.Select(t-gt;(t.Key,t.Count)).Where(t-gt;t[1]gt;1).Sum(t-gt;t[1]);
Writeln('Разыскиваемое количество столбцов: ',k)
end.
Пример
Количество строк и столбцов в матрице: 4 15
*** Исходная матрица ***
12 13 15 17 16 17 19 19 13 18 15 14 10 10 15
15 17 15 10 18 13 11 17 14 19 15 10 15 17 19
15 16 14 14 20 10 20 16 20 13 12 16 20 10 13
16 17 17 13 19 15 20 11 13 17 11 17 10 18 11
---------------------------------------------
Разыскиваемое количество столбцов: 7
Программка короткая, но в ней есть часть, осознание которой может быть затруднено. Поэтому ниже приводится эта же программка, в которой один из операторов разбит на несколько с выдачей промежных результатов.
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Начальная матрица ***');
var a:=MatrRandom(m,n,10,20);
a.Println(3); Writeln(3*a.ColCount*'-');
// по шажкам
var s1:=a.Cols.Select(col-gt;col.Sum);
Writeln('Суммы поколонно:'); s1.Println;
var s2:=s1.GroupBy(t-gt;t);
Writeln('Группировка сумм:'); Writeln(s2);
var s3:=s2.Select(t-gt;(t.Key,t.Count));
Writeln('То же, формат "значение, количество":'); Writeln(s3);
var s4:=s3.Where(t-gt;t[1]gt;1);
Writeln('Оставляем только суммы с повторами:'); Writeln(s4);
var k:=s4.Sum(t-gt;t[1]);
Writeln('Искомое количество столбцов: ',k)
end.
Пример
Количество строк и столбцов в матрице: 4 15
*** Начальная матрица ***
11 11 16 15 17 13 15 14 11 18 20 16 15 15 15
20 17 10 18 18 14 11 19 16 13 16 18 16 10 12
16 20 10 13 12 14 16 19 11 16 19 16 17 12 12
19 12 12 11 10 14 18 10 15 11 10 13 10 11 10
---------------------------------------------
Суммы поколонно:
66 60 48 57 57 55 60 62 53 58 65 63 58 48 49
Сортировка сумм:
[[66],[60,60],[48,48],[57,57],[55],[62],[53],[58,58],[65],[63],[49]]
То же, формат "значение, количество":
[(66,1),(60,2),(48,2),(57,2),(55,1),(62,1),(53,1),(58,2),(65,1),(63,1),(49,1)]
Оставляем только суммы с повторами:
[(60,2),(48,2),(57,2),(58,2)]
Разыскиваемое количество столбцов: 8
Варвара
Уфф. Ну, смотрите. Сначала нам надо сделать квадратную матрицу. Юзер вводит ее размер, она генерируется из случайных чисел. Считаем суммы элементов каждого из столбцов. Эти суммы каким-то образом мы должны внести в порожний массив. И теснее из этого массива сумм надобно вывести количество схожих.
Андрюха Торичиев
Я теснее написала нечто, еще и рабочее к тому же. Достигнула вывода рандомной матрицы, дальше подсчета сумм столбцов и вывода их по столбцам ниже. Не доходит как написать конкретно что "вот количество столбцов в которых схожие суммы элементов".
Анатолий
Охх... мне не поверят, что это я написала.. Поглядите, что сделал я. Вот эта программка выводит все, по идее, не считая количества столбцов с схожими элементами. Я не знаю как записать эту часть.
Бреликова
Викулька
program np_2;uses crt;const n=5;m=5;z=5;vara:array[1..n,1..m] of realinteger;k,i,j,s:integer;mas:array[1..z] of integer;s:array [1..m] of integer;beginwriteln('vv.razmer matrizy');readln(k);writeln('matr. A:');for i :=1 to n dobeginfor j:=1 to n do
Лидия Англичанинова
beginA[i,j]:=random(5);write(a[i,j],' ');end;writeln;end;sum:=0writeln('summi elementov stolbcov:'); for j:=1 to n do begin s:=0; for i:=1 to n do s:=s+a[i,j]; write(s:4); end; readln;for i:=1 to n do for j:=1 to m do mas[i]:=mas[i]+ a[j,i]; writeln('Сумма частей столбцов'); for i:=1 to n do writeln('Столбец ',i,'=',mas[i]);end.
Эвелина Чобан
И вот там как-то сказать, чтоб количество столбцов с схожими совокупностями просто вывело на экран вкупе со всем остальным..
Вохминова
Эльвира
//Pascal
var
A: array [1 .. 255, 1 .. 255] of integer;
sumA, historyA: array [1 .. 255] of integer;
i, j, n, m, z, count, count2: byte;
tmpSum: integer;
begin
randomize;
write('Строк = '); readln(n);
write('Столбцов = '); readln(m);
for i := 1 to n do
begin
for j := 1 to m do
begin
A[i, j] := random(5);
write(A[i, j]:4);
end;
writeln;
end;
writeln('---------------------------------------');
for j := 1 to m do
begin
tmpSum := 0;
count := 0;
for i := 1 to n do
tmpSum := tmpSum + A[i, j];
sumA[j] := tmpSum;
end;
for i := 1 to m do
write(sumA[i]:4);
writeln; writeln;
for j := 1 to m do
begin
count := 0;
count2 := 0;
tmpSum := sumA[j];
for i := 1 to m do
begin
if (sumA[i] = tmpSum) then
count := count + 1;
if historyA[i] = tmpSum then
count2 := count2 + 1;;
end;
if (count lt;gt; 1) and (count2 lt;gt; 1) then
begin
writeln('Схожих столбцов суммы ', tmpSum, ' = ', count);
historyA[j] := tmpSum;
end;
end;
readln;
end.
var
A: array [1 .. 255, 1 .. 255] of integer;
sumA, historyA: array [1 .. 255] of integer;
i, j, n, m, z, count, count2: byte;
tmpSum: integer;
begin
randomize;
write('Строк = '); readln(n);
write('Столбцов = '); readln(m);
for i := 1 to n do
begin
for j := 1 to m do
begin
A[i, j] := random(5);
write(A[i, j]:4);
end;
writeln;
end;
writeln('---------------------------------------');
for j := 1 to m do
begin
tmpSum := 0;
count := 0;
for i := 1 to n do
tmpSum := tmpSum + A[i, j];
sumA[j] := tmpSum;
end;
for i := 1 to m do
write(sumA[i]:4);
writeln; writeln;
for j := 1 to m do
begin
count := 0;
count2 := 0;
tmpSum := sumA[j];
for i := 1 to m do
begin
if (sumA[i] = tmpSum) then
count := count + 1;
if historyA[i] = tmpSum then
count2 := count2 + 1;;
end;
if (count lt;gt; 1) and (count2 lt;gt; 1) then
begin
writeln('Схожих столбцов суммы ', tmpSum, ' = ', count);
historyA[j] := tmpSum;
end;
end;
readln;
end.
Степа Потерухин
Спасибо большое с:
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов