Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2013, 20:46   #1
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание Function нахождения максимального элемента матрицы (дописать в программу) Pascal ABC

добрый вечер, программисты. помогите, пожалуйста дописать программу на языке Pascal ABC.

program jh_1;
uses crt;
type a=array[1..20,1..20] of integer;
sort=array[1..20,1..20] of integer;
var n:integer;
massiv:a;
mass:sort;
i,j:integer;

procedure vid(n:integer);
var i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do begin
massiv[i,j]:=random(9)-5;
write(massiv[i,j],' ');
end;
writeln;
end;
end;
procedure sor(n,i,j:integer);
var T,k,l:integer;
begin
mass:=massiv;
for l:=1 to n do begin
For i:=2 to n do
Begin T:=mass[l,i]; j:=1;
While T>mass[l,j] do j:= j +1;
For k:=i-1 downto j do mass[l,k+1] := mass[l,k]; mass[l,j]:=T;
End;
end;
Writeln ('Упорядкований масив: ');
for l:=1 to n do begin
For i := 1 to n do Write(mass[i,l],' '); Writeln;end;
end;
begin
clrscr;
writeln('введите розмер матрицы');
readln(n);
vid(n);
sor(n,i,j);
end.

эта программа работает. в основной программе вводится размер матрицы, в Procedure Vid ввод матрицы с помощью генератора случайных чисел Randomize, в Procedure Sort производится сортировка строк по спаданию.

нужно в эту программу написать Function нахождения максимального элемента матрицы (нужно так, чтобы Function работала в этой программе).


заранее, огромное спасибо.
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 21:03   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
function max(n:integer): integer;
var
  max: integer;
  i, j: integer;
begin
  max := mass[1,1];
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      if max < mass[i, j] then
         max := mass[i, j];
    end;
  end;
  
  result := max;
end;
Добавьте в код
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 05.06.2013, 21:18   #3
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос ошибка неверное количество фактических параметров при вызове функции

kventin_zhuk, огромное спасибо. вот программа, но при вызове Function Max она выдаёт ошибку "неверное количество фактических параметров".

вот программа

program jh_1;
uses crt;
type a=array[1..20,1..20] of integer;
sort=array[1..20,1..20] of integer;
var n:integer;
massiv:a;
mass:sort;
i,j:integer;

procedure vid(n:integer);
var i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do begin
massiv[i,j]:=random(9)-5;
write(massiv[i,j],' ');
end;
writeln;
end;
end;


procedure sor(n,i,j:integer);
var T,k,l:integer;
begin
mass:=massiv;
for l:=1 to n do begin
For i:=2 to n do
Begin T:=mass[l,i]; j:=1;
While T>mass[l,j] do j:= j +1;
For k:=i-1 downto j do mass[l,k+1] := mass[l,k]; mass[l,j]:=T;
End;
end;
Writeln ('отсортированный массив: ');
for l:=1 to n do begin
For i := 1 tо n do Write(mass[i,l],' '); Writeln;end;
end;
function max(n:integer): integer;
var
max: integer;
i, j: integer;
begin
max := mass[1,1];
for i := 1 to n do
begin
for j := 1 to n do
begin
if max < mass[i, j] then
max := mass[i, j];
end;
end;

result := max;
end;


begin
clrscr;
writeln('введите размер массива');
readln(n);
vid(n);
sor(n,i,j);
max(n,i,j);
end.


ошибка в строке вызова Function Max (строка - max(n,i,j) ) "ошибка: неверное количество фактических параметров".

заранее, огромное спасибо за помощь.
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 21:23   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
writeln('Max = ', max(n));
- так вот сделайте вместо строчки вызова.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 05.06.2013, 21:47   #5
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
По умолчанию спасибо

kventin_zhuk, огромное вам спасибо.
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 21:55   #6
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос

program jh_1;
uses crt;
type a=array[1..20,1..20] of integer;
sort=array[1..20,1..20] of integer;
var n:integer;
massiv:a;
mass:sort;
i,j:integer;

procedure vid(n:integer);
var i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do begin
massiv[i,j]:=random(9)-5;
write(massiv[i,j],' ');
end;
writeln;
end;
end;


procedure sor(n,i,j:integer);
var T,k,l:integer;
begin
mass:=massiv;
for l:=1 to n do begin
For i:=2 to n do
Begin T:=mass[l,i]; j:=1;
While T>mass[l,j] do j:= j +1;
For k:=i-1 downto j do mass[l,k+1] := mass[l,k]; mass[l,j]:=T;
End;
end;
Writeln ('Óïîðÿäêîâàíèé ìàñèâ: ');
for l:=1 to n do begin
For i := 1 to n do Write(mass[i,l],' '); Writeln;end;
end;
function max(n:integer): integer;
var
max: integer;
i, j: integer;
begin
max := mass[1,1];
for i := 1 to n do
begin
for j := 1 to n do
begin
if max < mass[i, j] then
max := mass[i, j];
end;
end;

result := max;
end;


begin
clrscr;
writeln('ââåäèòå ðîçìåð ìàòðèöû');
readln(n);
vid(n);
sor(n,i,j);
writeln('Max = ', max(n));
end.

в эту программу написать Procedure вывода элементов матрицы, которые находятся между диагоналями.
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 22:05   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

1) Код нужно форматировать (кнопочка с #)
2) Между какими диагоналями?
Poma][a вне форума Ответить с цитированием
Старый 05.06.2013, 22:21   #8
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Вопрос вывести элементы, котрые находятся между главными диагоналями

в Procedure нужно вывести элементы матрицы, которые находятся между главными диагоналями.

в Function нужно вывести отсортированную матрицу (ранее в Procedure), которая изменяет цвет через каждые 2 секунды. Pascal ABC
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 22:38   #9
программирование
Форумчанин
 
Регистрация: 22.04.2013
Сообщений: 162
Восклицание вывести элементы, которые находятся между главными диагоналями Pascal ABC

в Procedure нужно вывести элементы матрицы, которые находятся между главными диагоналями


например, дана матрица 5х5, в ней удалены те элементы, которые находятся на двух главных диагоналях. нужно вывести в Procedure те элементы, которые остались.

X X X
X X X
X X X X
X X X
X X X


заранее, огромное спасибо
программирование вне форума Ответить с цитированием
Старый 05.06.2013, 22:49   #10
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Ура! Добрались до истины!

Кстати, у двухмерного массива есть только одна главная диагональ (из левого верхнего в правый нижний) и есть одна побочная диагональ (из правого верхнего в левый нижний).

Код:
for i := 1 to n do begin
		for j := 1 to n do
			if (i <> j) and (i+j-1 <> n) then
				Write (a[i, j] : 3);
		WriteLn
end
Poma][a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
процедура поиска максимального элемента массива Pascal ABC программирование Помощь студентам 1 03.06.2013 22:20
Дописать программу на Pascal ABC daniil-640 Помощь студентам 1 08.06.2012 19:54
Дописать программу на Pascal ABC daniil-640 Помощь студентам 3 30.05.2012 15:32
программа нахождения максимального элемента матрицы Stellar_light Помощь студентам 2 28.11.2010 19:37
Составить программу нахождения максимального элемента Red Devel Помощь студентам 3 25.12.2007 19:08