Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %1.3
- % Написать скрипт, в котором генерируется случайная квадратная матрица размера 6,
- % и её строки переставляются таким образом, чтобы элементы главной диагонали были расположены по возрастанию
- clear
- clc
- close all % закрывает все графические окна перед запуском нового окна
- r=6; % размер матрицы
- Arr = rand(r,r);
- r=length(Arr); % вычислим размер таблицы
- A=Arr;
- d=10;
- NewArr =[]; % имя отсортированной таблицы
- stop=654321;
- for tt = 123456:1:stop
- count = tt;
- disp(count);
- trig=1;
- b1 = mod(count, d); count = fix(count/d); if (b1>r || b1==0) continue; end
- b2 = mod(count, d); count = fix(count/d); if (b2>r || b2==0) continue; end
- b3 = mod( count, d); count = fix(count/d); if (b3>r || b3==0) continue; end
- b4 = mod( count, d); count = fix(count/d); if (b4>r || b4==0) continue; end
- b5 = mod( count, d); count = fix(count/d); if (b5>r || b5==0) continue; end
- b6 = mod( count, d); count = fix(count/d); if (b6>r || b6==0) continue; end
- order = [b1,b2,b3
- ,b4,b5,b6
- ]
- k = unique(order);
- if ((length(order)==length(k)) && (trig==1))
- NewArr = cat(1,NewArr,Arr(b6,:));
- NewArr = cat(1,NewArr,Arr(b5,:));
- NewArr = cat(1,NewArr,Arr(b4,:));
- NewArr = cat(1,NewArr,Arr(b3,:));
- NewArr = cat(1,NewArr,Arr(b2,:));
- NewArr = cat(1,NewArr,Arr(b1,:));
- Diag=diag(NewArr);
- DiagDiff = diff(Diag); % вычитание порядковых чисел массива
- MinArr = min(DiagDiff);
- if (MinArr>=0)
- disp('решение есть');
- break;
- end
- end
- if (tt==stop)
- disp('решения нет');
- end
- NewArr=[];
- end
- DiagDiff
- NewArr
- % function[val] = Main(Arr,r)
- % NewArr =[]; % имя отсортированной таблицы
- % Store=[]; % не вошло
- % AAA=Arr;
- % MAXX=MAX(AAA,r);
- % endArr=AAA(MAXX,:); % Вырезаем аксимальную строку с конца
- % AAA(MAXX,:)=[];
- % r=r-1;
- % for ii=1:r
- % if (length(AAA)>0)
- % % [NewArr,AAA] = Main(AAA,NewArr,ii,4);
- % end
- % minId=MIN(AAA,ii); % выявление минимального знаения строки с начала
- % [v1] = sortDowntoUp(AAA,ii);
- % NewArr = cat(1,NewArr,v1);
- % AAA(minId,:)=[];
- % if (ii<r) %проверка подходящих строк
- %
- % Next=sortDowntoUp(AAA,MIN(AAA,ii+1))
- % if (NewArr(end,ii)>Next(ii+1))
- % eeee=ii+1; % индекс неподходящей строки
- % [v2] = sortDowntoUp(AAA,eeee);
- % Store = cat(1,Store,v2); % переносим неподходящее в хранилище
- % % NewArr(end,:)=[];
- % end
- % end
- % disp('------------');
- % end
- % NewArr = cat(1,NewArr,endArr) %добовляем строку обратно в конец
- % %NewArr = cat(1,NewArr,Store)
- % Store % не подошла строка
- % end
- %
- % function[v1] = sortDowntoUp(CopyArr,kk)
- % for ii = 1:length(CopyArr(:,1))
- % if (0==length(CopyArr(:,1)))
- % break;
- % end
- % jj = MIN(CopyArr,kk);
- % CopyArr(jj,1)% столб ii строка jj
- % NewArr(ii,:) = CopyArr(jj,:);
- % CopyArr(jj,:)=[];
- % v1=NewArr(1,:);
- %
- % if (0==length(CopyArr(:,1)))
- % break;
- % end
- % end
- % end
- %
- %
- %
- % function[val] = MIN(Arr,ii)
- % Arr = Arr(:,ii);
- % n = length(Arr(:,1));
- % Min = min(Arr);
- % for ij= 1:n
- % if (Arr(ij,1)== Min)
- % val = ij; break;
- % end
- % end
- % end
- %
- % function[val] = MAX(Arr,ii)
- % Arr = Arr(:,ii);
- % n = length(Arr(:,1));
- % Max = max(Arr);
- % for ij= 1:n
- % if (Arr(ij,1)== Max)
- % val = ij; break;
- % end
- % end
- % end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement