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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2011, 22:14   #1
Casper098
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 33
Восклицание Задача на массив

Дана матрица A(6*6).Определить наибольший из элементов матрицы,лежащих ниже её диагонали.
Решить нужно в Pascal.
Заранее спасибо.
Casper098 вне форума Ответить с цитированием
Старый 18.09.2011, 22:23   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

Код:
for i=1 to 6 do
begin
for j:=1 to 6 do
begin
   if(i<j)then //если (i<=j),то диагональные элементы тоже будут браться в расчёт
     begin
       //вот тут ищете максимальный элемент из массива a[i][j], или какой-там у вас...
    end
end;
end;
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось Stilet; 19.09.2011 в 08:07.
NetSpace вне форума Ответить с цитированием
Старый 18.09.2011, 22:39   #3
Casper098
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 33
По умолчанию

То есть вот так будет?

Код:
Program 123;
uses crt
var a:array [1..6] of integer;
i,j,max:integer;
begin
randomize
writeln('vvedite elementi massiva:');
max:=0;
for i:=1 to 6 do
for j:=1 to 6 do
begin
a[i,j]:=random (12);
if (i<j) then
begin
max:=max + a[i,j]
write (a [i,j])
end;
writeln;
end;
writeln('max= ');
end;
end.
снова исправил,ну думаю не правильно.
и все же,
//вот тут ищете максимальный элемент из массива a[i][j], или какой-там у вас...
а как его найти,записать?

Последний раз редактировалось Stilet; 19.09.2011 в 08:08.
Casper098 вне форума Ответить с цитированием
Старый 19.09.2011, 03:03   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Код:
Program 123;
uses crt
var a:array [1..6] of integer; Вот тут ошибка. Почитай, как описываются двумерные массивы(матрицы).
i,j,max:integer;
begin
randomize Каждый оператор заканчивается так ";"
writeln('vvedite elementi massiva:');
max:=0;
for i:=1 to 6 do
for j:=1 to 6 do
begin
a[i,j]:=random (12);
if (i<j) then   Я БЫ ДОПИСАЛ К УСЛОВИЮ and(max<a[i,j])
begin
max:=max + a[i,j]Каждый оператор заканчивается так ";". Тут ты ищешь сумму
 всех элементов массива, которые ниже диагонали, а тебе
 надо найти максимальный из них.
write (a [i,j])    Каждый оператор заканчивается так ";"
end;
writeln;
end;
writeln('max= ');   writeln('max= ',max); вот так будет правильней)
end;
end
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 19.09.2011, 05:09   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Rin Посмотреть сообщение
Код:
write (a [i,j])    Каждый оператор заканчивается так ";"
end;
Это не совсем верно. ";" _разделяет_операторы_. Если за оператором идет end (как в этом случае), то ставить ";" не обязательно.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 19.09.2011, 05:55   #6
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Век живи, век учись. То, что разделяет - это понятно. Но не знал того, что если после оператора стоит end, то разделитель не обязателен.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 19.09.2011 в 05:57.
Rin вне форума Ответить с цитированием
Старый 19.09.2011, 20:04   #7
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Зачем там вообще складывать?

Цитата:
Сообщение от NetSpace Посмотреть сообщение
Код:
for i=1 to 6 do
begin
for j:=1 to 6 do
begin
   if(i<j)then //если (i<=j),то диагональные элементы тоже будут браться в расчёт
     ...
Скорее i>j, иначе при выводе переворачивать матрицу придётся, т.е. цикл проходить не так как при заполнении - сначала по j, а потом по i, - ну это так, дело цвета и вкуса )
А вот лишнии условия можно убрать. В первой строке нет элементов ниже диагонали (главной), во второй - 1 число, в третьей 2 числа и т.д.
Код:
max := a[2, 1];
for i := 3 to 6 do
  for j := 1 to i-1 do
    if a[i, j] > max then max := a[i, j];
write(max);
где i - строки, j - столбцы.
eoln вне форума Ответить с цитированием
Старый 19.09.2011, 20:43   #8
Casper098
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 33
По умолчанию

зачем max принимать max := a[2, 1];?
если можно max принять max:=-1
у меня же
a[i,j]:=random (12);
следовательно числа беруться от 0 до 11
я думал будет так

Код:
Program 123;
uses crt
var a:array [1..6,1..6] of integer;
i,j,max:integer;
begin
randomize
writeln('vvedite elementi massiva:');
max:=-1;
for i:=1 to 6 do
for j:=1 to 6 do
begin
a[i,j]:=random (12);
if (i>j) then
begin
if max<a [i,j] then;
max:=a[i,j];
write (a [i,j])
end;
writeln;
end;
writeln('max= ',max);
end;
end.
или
for i:=1 to 6 do
for j:=1 to 6 do
нужно заменить на?
for i := 3 to 6 do
for j := 1 to i-1 do
я что-то совсем запутался,напишите пожалуйста как будет выглядить полностью рабочая программа,за ранее спасибо.

Последний раз редактировалось Casper098; 19.09.2011 в 22:28.
Casper098 вне форума Ответить с цитированием
Старый 19.09.2011, 22:31   #9
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

В товём коде вместо
Код:
max:=-1;
for i:=1 to 6 do
for j:=1 to 6 do
begin
a[i,j]:=random (12);
if (i>j) then
begin
if max<a [i,j] then;
max:=a[i,j];
write (a [i,j])
end;
writeln;
end;
нужно вставить

Код:
for i:=1 to 6 do   for j:=1 to 6 do  a[i,j]:=random (12);
max := a[2, 1];
for i := 3 to 6 do
  for j := 1 to i-1 do
    if a[i, j] > max then max := a[i, j];
write(max);
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 20.09.2011, 00:19   #10
Casper098
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 33
По умолчанию

max := a[2, 1]
объясните пожалуйста хотя бы для чего принимаем такое значение?
for i := 3 to 6 do
for j := 1 to i-1 do
и как это понять тоже?
Casper098 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на массив Evgenyi Паскаль, Turbo Pascal, PascalABC.NET 2 20.06.2011 18:04
Задача на массив foxzibit123 Паскаль, Turbo Pascal, PascalABC.NET 4 25.07.2010 21:16
Задача на массив. spankyham Помощь студентам 6 15.04.2009 16:41
Задача на массив KARUSHEV Помощь студентам 1 02.04.2009 09:42
Задача на массив. ErMaKiim Помощь студентам 2 29.11.2007 19:42