IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Процедуры и функции (подпрограммы)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Максим

Репутация: -  0  +


Создать массив целых чисел B 11x11. Если на главной диагонали стоит 0 – отсортировать главную диагональ, если на побочной – отсортировать побочную. Иначе – повернуть массив на 90 градусов.
Программа работает, но нужно еще найти максимальный элемент исходной матрицы на главной и побочной диагоналях, через функции, чтобы выводило "исходная матрица" : 'максимальный элемент (число) на (главной/побочной) диагонали.
program proceduri8;
type mas= array[1..11,1..11] of integer;
var b,i,j,k,n: integer;fl1,fl2:boolean;a1,b1:mas;
function poisk1(dd:mas):boolean;
var fl1:boolean;i,j:integer;
begin
fl1:=false;
for i:=1 to n do

if (dd[i,i]=0)=true then
fl1:= true;

poisk1:=fl1;
end;
function poisk2(cc:mas):boolean;
var fl2:boolean;i,j:integer;
begin
fl2:=false;
for i:=1 to n do

if (cc[i,i]=0)=true then
fl2:= true;

poisk2:=fl2;
end;

procedure sort1(var a:mas);
var i,k,j,b:integer;
begin
for i:=1 to n do
for k:=1 to n-1 do
for j:=1 to n-1 do
if (a[i,j]>a[i,j+1])=true then
begin
b:=a[i,j];a[i,j]:=a[i,j+1];a[i,j+1]:=b
end;
end;
procedure sort2(var a:mas);
var i,k,j,b:integer;
begin
for i:=1 to n do
for k:=1 to n-1 do
for j:=n-i+1 to 1 do
if (a[i+1,n-i]>a[i,n-i+1])=true then
begin
b:=a[i,n-i+1];a[i,n-i+1]:=a[i+1,n-i];a[i+1,n-i]:=b;
end;
end;

procedure vyvod(a:mas);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:3); writeln;
end;
end;

procedure sort3(var a,b:mas);
var i,j:integer;
begin
for i:=1 to n do
for j:=n downto 1 do
b[i,n+1-j]:=a[j,i];
end;

begin
fl1:=false;
fl2:=false;
n:=11;
for i:=1 to n do
for j:=1 to n do
a1[i,j]:=random(100);
writeln('Исходный массив:');
vyvod(a1);
writeln;
fl1:=poisk1(a1);
if fl1=true then begin
sort1(a1);
writeln('Преобразованный массив:');
vyvod(a1);
writeln; end;
poisk2(a1);
if fl2=true then begin
sort2(a1);
vyvod(a1);
writeln;end;
if (fl2 and fl1)=false then begin
sort3(a1,b1);
writeln('Конечный массив a1:');
vyvod(a1);
writeln;
writeln('Конечный массив b1:');
vyvod(b1); end;
end.

Помогите пожалуйста smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  9  +


А за чем остановка?
Основная диагональ - та, у которой i=j, т.е. a1[i, i]. Побочная диагональ a1[i, 11+1-i]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 3:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name