|
Вопрос # 5 355/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Помогите пожалуйста с задачей!
Дана целочисленная квадратная матрица. Определить минимум среди сумм модулей элементов диагоналей параллельных побочной диагонали матрицы.(оформить в виде процедуры)
 |
Вопрос задала: sesyriti (статус: Посетитель)
Вопрос отправлен: 1 июня 2011, 11:56
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Толяныч
Здравствуйте, sesyriti!
Не пользы студентов ради а токмо разминки пальцев для :
Приложение: Переключить в обычный режим- program Project1;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils;
- const N = 5 ;
- type Matrix = Array[1..N,1..N] of integer ;
- var
- NN,i,j,ir : integer ;
- Arr : Matrix ;
-
- procedure MinSum (nx: integer; a : Matrix; var irez : integer) ;
- var i1,ix,iy,fin1,s0,s1 : integer ;
- begin
- fin1 := nx + nx ; s1 := 9999999 ;
- for i1 := 2 to fin1 do
- begin
- s0 := 0 ;
- for ix := 1 to fin1 do
- begin
- iy := i1-ix ;
- if ((ix>nx) or (iy>nx) or (iy<1))then continue ;
- s0 := s0 + Abs(a[iy][ix]) ;
- end ;
- if s0<s1 then s1 := s0 ;
- Writeln (i1 : 4, s0 : 4,s1 : 4) ; // *** //
- irez := s1 ;
- end ;
- end ;
-
- begin
- Randomize ;
- for i := 1 to 5 do
- for j := 1 to 5 do
- Arr[i][j] := Round ((Random-0.5)*100.0) ;
- for i := 1 to 5 do
- begin
- for j := 1 to 5 do Write ( Arr[i][j] : 4 ) ;
- Writeln
- end ;
- Writeln ;
- MinSum (5,Arr,ir) ;
- Writeln ;
- Writeln ('Min Summa = ',ir) ;
- Readln (i)
- end.
-
-
 |
Ответ отправил: Толяныч (статус: 4-ый класс)
Время отправки: 1 июня 2011, 17:06
|
Ответ #2. Отвечает эксперт: ierihon1
Здравствуйте, sesyriti!
program Project1;
{$APPTYPE CONSOLE}
const n = 5;
type
TMatrix = array[1..n,1..n] of integer;
TArray = array[1..n+n-1] of integer;
var M:TMatrix;
A:TArray;
c:integer;
min:integer;
procedure MakeMatrix(var M:TMatrix);
var i,j:integer;
begin
for i := 1 to n do
begin
for j:= 1 to n do
begin
m[i,j]:=random(20)-10;
write(m[i,j]:4);
end;
writeln;
end;
end;
procedure Diagonal(var M:TMatrix);
var i,j,k:integer;
begin
for k:= n + n - 1 downto 1 do
for i := 1 to n do
for j := 1 to n do
if k + i + j = n + n + 1 then
A[k]:=A[k]+Abs(M[i,j]);
for k := n + n - 1 downto 1 do
if k <> n then
write(A[k]:3);
c:=A[1];
writeln;
for k := 2 to n + n - 1 do
if (A[k]<c) and (k <> n) then
min:=A[k]
else
min:=c;
writeln;
write('Min = ',min);
end;
begin
randomize;
MakeMatrix(M);
writeln;
Diagonal(M);
readln;
end.
А у меня такой вариант.. отображается без задержек и ошибок нет гарантированно)
 |
Ответ отправил: ierihon1 (статус: 1-ый класс)
Время отправки: 1 июня 2011, 17:53
|
Мини-форум вопроса
Всего сообщений: 11; последнее сообщение — 3 июня 2011, 14:25; участников в обсуждении: 4.
|
min@y™ (статус: Доктор наук), 1 июня 2011, 11:59 [#1]:
Цитата (sesyriti):
Помогите пожалуйста с задачей!
Это что значит-то? Сделать лабу за тебя?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
1 июня 2011, 11:59: Вопрос перемещён из тематического раздела Pascal » Программирование на Pascal в раздел Лабораторный практикум » Pascal модератором min@y™
|
Толяныч (статус: 4-ый класс), 1 июня 2011, 13:23 [#2]:
Как всегда. Жаль мне студней, у которых нету интернету в каком-нить Задрюпинске. Неужто сами думают ?
|
|
min@y™ (статус: Доктор наук), 1 июня 2011, 13:29 [#3]:
Цитата (Толяныч):
Жаль мне студней, у которых нету интернету в каком-нить Задрюпинске. Неужто сами думают ?
Когда я учился, у меня интернета не было. У меня дома даже телефона не было. И ничо, нормально учился.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Толяныч (статус: 4-ый класс), 1 июня 2011, 17:09 [#4]:
За оптимальность не ручаюсь. Но работает. Если убрать
Writeln там, где комментарий // ** ( 27 стр. ) , не будет отображать в цикле процесс поиска минимума, а останется только итоговый вывод.
|
|
bugmenot (статус: 3-ий класс), 1 июня 2011, 17:23 [#5]:
Цитата (Толяныч):
За оптимальность не ручаюсь. Но работает. Если убрать
Writeln Этож лаба, а так - да, вывод в консоль очень медленный.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Толяныч (статус: 4-ый класс), 1 июня 2011, 17:40 [#6]:
И у меня ошибок нет клянусь бородой !
|
|
ierihon1 (статус: 1-ый класс), 1 июня 2011, 17:42 [#7]:
не спорю) проверял)
|
|
Толяныч (статус: 4-ый класс), 1 июня 2011, 23:03 [#8]:
А стартеру опять инет отключили за неуплату
|
|
Толяныч (статус: 4-ый класс), 2 июня 2011, 12:36 [#9]:
Вот и помогай им, и -- ни ответа, ни привета. Хватит благотворительности. Задрало.
|
|
bugmenot (статус: 3-ий класс), 2 июня 2011, 13:00 [#10]:
Цитата (Толяныч):
А стартеру опять инет отключили за неуплату В армию ушел :-D
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Толяныч (статус: 4-ый класс), 3 июня 2011, 14:25 [#11]:
Вернется уже под другим ником. Если сержант позволит
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|