Подсчитать кол-во строк целочисленной матрицы А(5,5), являющихся перестановкой чисел 1,2,3,4,5
мне последняю строка не понятна, что именно нужно сделать?
т.е. там где есть числа 1-5 переставить строки и подсчитать кол-во перестановок?
Подсчитать кол-во строк целочисленной матрицы А(5,5), являющихся перестановкой чисел 1,2,3,4,5
мне последняю строка не понятна, что именно нужно сделать?
т.е. там где есть числа 1-5 переставить строки и подсчитать кол-во перестановок?
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
31 марта 2008 в 19:05
дана целочисленная матрица А размером MxN, где M,N – заданные натуральные числа. Сформировать одномерный массив В, где В(j) равно сумме элементов кратных пяти и расположенных в j столбце матрицы, j=1,2…N. если таких элемнтов в j столбце нет, то элементу В(j) присвоить номер столбца. помогите мне пожалуйста!
25 марта 2008 в 22:00
верно
были мысли с использованием a[mArr[i]] только я их не довёл до конца)
25 марта 2008 в 21:01
Учитывая, что значения массива mArr находятся в диапазоне 1..5 проверку можно сделать компактее, по моему:
function inArray(const mArr:TaRRR):Boolean;
var
i:byte;
a:TaRRR;
begin
{Инициализация}
for i:=1 to 5 do a[i]:=0;
result:=false;
for i:=1 to 5 do begin
if a[mArr[i]] = 0 then a[mArr[i]] := 1
else exit; {Повторяющееся число в массиве}
end;
{Массив – результат перестановки 1, 2, 3, 4, 5}
result := true;
end;
25 марта 2008 в 1:00
мой вариант. через функцию.
______________
program Project2;
{$APPTYPE CONSOLE}
const
strCnt = 5;
type
TaRRR = array [1..5] of Byte;
function inArray(const mArr:TaRRR):Boolean;
var
i,
j:byte;
pr:Boolean;
a:TaRRR;
begin
for i:=1 to 5 do
a[i]:=i;
result:=false;
for i:=1 to 5 do
begin
pr:=false;
j:=1;
while (j<6) and not pr do //если находим вхождение – обнуляем элемент чтобы не попался второй раз.
if mArr[i]=a[j] then
begin
pr:=true;
a[j]:=0;
end
else
inc(j);
if not pr then exit;//если не нашли вхождение числа – выходим с result:=false;
end;
//сюда попали если все проверки(массив является перестановкой 1,2,3,4,5) завершились успешно.
result:=true;
end;
var
i,
j,
cnt:Word;
a:Array[1..strCnt] of TaRRR; // массив массивов
begin
randomize;
for i:=1 to strCnt do
begin
for j:=1 to 5 do
begin
a[i][j]:=random(5)+1;
write(a[i][j]); write(' ');
end;
writeln;
end;
cnt:=0;
for i:=1 to strCnt do
if inArray(a[i]) then inc(cnt); // проверка является ли подмассив перестановкой 1,2,3,4,5
write('cnt=');
writeln(cnt);
readln;
end.
24 марта 2008 в 21:01
нет,я ещё к ней только подготавливаюсь, покачто остальные делаю…
24 марта 2008 в 16:04
Задача-то решена или так на рандомах и остановились?
24 марта 2008 в 1:01
Может быть. Специально оговорился, что документации под рукой нет, а последний раз писал на Паскале лет… 20 тому назад.
23 марта 2008 в 23:01
Александр Чигринец, какой тип, такой и рандом.
если в интежер пихать рандомное значение то оно и будет целочисленное. транк тут излишен
23 марта 2008 в 22:03
Если мне память не изменяет, то random(n) выдаёт значения от 0 до (n-1).9999 (тип real)
Если вызывать trunc(random(5))+1, то как раз и получим числа в диапазоне 1..5
Хотя могу и ошибаться, а справочника по Паскалю под рукой нет.
23 марта 2008 в 18:05
по-моему
m:=random(4)+1;
23 марта 2008 в 17:03
точно, чё-то ступил немного)
задавать 25 чисел долговато, лучше сгенирировать)
ведь чтоб сгенирировать от 1 до 5 нужно так написать
m:=random(5)+1
23 марта 2008 в 17:02
В смысле, матрицу 5х5?
А она не из входного файла читается? Или с клавиатуры вводится? Если нет, тогда можно и так сгенерировать (только random, по моему, не целые числа выдаёт и смысла 3+2, а не 5, я тоже не понял).
23 марта 2008 в 17:00
Как я понял – да, 3 строки.
23 марта 2008 в 17:00
а массив тогда задать как?
m:=random(2+3)+1
23 марта 2008 в 16:05
Судя по ушам это квадратная матрица и в ней 5 строк ))
23 марта 2008 в 16:05
это еслиб небыло этих слов "являющихся перестановкой чисел 1,2,3,4,5"
23 марта 2008 в 16:05
Из дого, что приведено в сообщении получается, что для каждой строки нужно проверить, что числа 1,2,3,4,5 там представлены все и по одному разу.
23 марта 2008 в 16:05
т.е. например
5 4 2 1 3
1 2 3 5 4
4 5 3 2 1
1 1 2 5 5
4 5 5 1 2
в данном случае получается 3 строки, да? или как-то подругому?