ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

27.12.2007, 16:17
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
ПАСКАЛЬ =\
Вообщем есть задача:
Код:
program two;
uses crt;
const
MAX=20;
type
line=Array[1..MAX] of real;
var
smin:real;
imin:Integer;
i,j,n,m:Integer;
x:Array[1..MAX] of line;
buf:line;
juf:Array[1..MAX] of Integer;
inp:Text;
begin
Assign(inp,'matrix.txt');
Reset(inp);
Read(inp,n,m);{Є®«ЁзҐбвў® бвp®Є Ё бв®«Ўж®ў}
if (MAX<n) or (MAX<m) then
Write('*Ґ¦Ґ«*о бзЁв*вм! ')
else begin
for i:=1 to n do
for j:=1 to m do
Read(inp,x[i][j]);
for i:=1 to n do begin
buf[i]:=x[i][1];
juf[i]:=1;
for j:=2 to m do
if buf[i]<x[i][j] then begin
buf[i]:=x[i][j];
juf[i]:=j
end
end;
smin:=buf[1];
for i:=2 to n do begin
if smin>buf[i] then begin
smin:=buf[i];
imin:=i
end
end;
Writeln;
Write('‘Ґ¤«®ўaп в®зЄa x=',juf[imin],' y=',imin)
end;
Close(inp)
end.
А вот условие:
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы A(nxm) напечатать индексы всех ее седловых точек
И вот собственно бага:
Она ищет(второе условие):
3 3
3 1 1
2 1 1
3 1 1
И не ищет, т.е. не ищет первое условие(выделенное):
3 3
1 1 1
2 3 3
1 1 1
Помогите исправить! ПЖЛ, мне до завтра , т.е. сегодня до хоть до 00 00 плиз
|
|
|

27.12.2007, 16:36
|
|
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
я не уверен на счёт того как у тебя компилятор принимает это, но в стандартном паскале обычно пишут не [i][j], а [i,j]
ps пожелание: делай отступы, так будет легче другим код читать, да и тебе тоже, циклы и условия хорошо отделять от основной проги, парами enter'ов
и комментарии, потому что сейчас сидишь и разбираешь, что ты хотел в каждой строке сделать, комменты помогают алгоритм понять
Последний раз редактировалось VERte][; 27.12.2007 в 16:47..
|
|
|

27.12.2007, 16:40
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
VERte][ я просил помочь -) это он нормально воспримент, ибо работает =\
|
|
|

27.12.2007, 17:11
|
|
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
не стал разбираться(по приведённым выше причинам), вот код для поиска по первому условию (по второму полный аналог):
размер n*m, обошёлся одним массивом x[i,j]
i,j - индексы; k,ind - доп. переменные индексов; ok-boolean, для проверки условия.
Код:
for i:=1 to n do {проход по строкам}
begin
min:=x[i,1]; ok:=true;
for j:=2 to m do {поиск наименьшего в строке}
if x[i,j]<min then begin min:=x[i,j]; ind:=j; end;
for k:=i downto 1 do {проверка на макс в столбце}
if x[k,ind]>min then begin ok:=false; k:=n; end;
if ok then
for k:=i to n do
if x[k,ind]>min then begin ok:=false; k:=n; end;
if ok then write (i,ind);
end;
Последний раз редактировалось VERte][; 27.12.2007 в 17:16..
|
|
|

27.12.2007, 17:27
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
Код:
program two;
uses crt;
const
MAX=20;
type
line=Array[1..MAX] of real;
var
smin,min:real;
imin:Integer;
i,j,n,m,ind,k:Integer;
ok:boolean;
x:Array[1..MAX] of line;
buf:line;
juf:Array[1..MAX] of Integer;
inp:Text;
begin
Assign(inp,'matrix.txt');
Reset(inp);
Read(inp,n,m);{Є®«ЁзҐбвў® бвp®Є Ё бв®«Ўж®ў}
if (MAX<n) or (MAX<m) then
Write('*Ґ¦Ґ«*о бзЁв*вм! ')
else begin
for i:=1 to n do
for j:=1 to m do
Read(inp,x[i][j]);
for i:=1 to n do begin
buf[i]:=x[i][1];
juf[i]:=1;
for j:=2 to m do
if buf[i]<x[i][j] then begin
buf[i]:=x[i][j];
juf[i]:=j
end
end;
smin:=buf[1];
for i:=2 to n do begin
if smin>buf[i] then begin
smin:=buf[i];
imin:=i
end
end;
for i:=1 to n do
begin
min:=x[i,1]; ok:='true';
for j:=2 to m do
if x[i,j]<min then begin min:=x[i,j]; ind:=j; end;
for k:=i downto 1 do
if x[k,ind]>min then begin ok:='false'; k:=n; end;
if ok then
for k:=i to n do
if x[k,ind]>min then begin ok:='false'; k:=n; end;
if ok then write (i,ind);
end;
Writeln;
Write('‘Ґ¤«®ўaп в®зЄa x=',juf[imin],' y=',imin)
end;
Close(inp)
end.
висьнет че-то
|
|
|

27.12.2007, 17:35
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
бля, когда кароче так виснет:
3 3
1 1 1
3 2 3
1 1 1
или
3 3
1 1 1
3 3 2
1 1 1
тут уже чисто твой код работает
|
|
|

27.12.2007, 17:45
|
|
Moderator - Level 7
Регистрация: 17.05.2007
Сообщений: 220
Провел на форуме: 3013539
Репутация:
441
|
|
попробуй так(тут ток один вариан седловой точки):
Код:
program matrix(input, output);
const lim=20;
var i,j,k,ind,min,n,m:integer;
x:array[1..lim,1..lim] of integer;
ok:boolean
inp:Text;
begin
Assign(inp,'matrix.txt');
Reset(inp);
Read(inp,n,m);
if (n>lim) or (m>lim) then
Write('*Ґ¦Ґ«*о бзЁв*вм! ')
else begin
for i:=1 to n do
for j:=1 to m do
Read(inp,x[i][j]);
for i:=1 to n do
begin
min:=x[i,1]; ok:=true;
for j:=2 to m do
if x[i,j]<min then begin min:=x[i,j]; ind:=j; end;
for k:=i downto 1 do
if x[k,ind]>min then begin ok:=false; k:=n; end;
if ok then
for k:=i to n do
if x[k,ind]>min then begin ok:=false; k:=n; end;
if ok then writeln(i,ind);
end;
end
end.
зы. ещё 1 вещь, подумай над тем если у тебя в строке 2 максимальных элемента!!! (тогда придётся все варианты с ними рассматривать)
|
|
|

27.12.2007, 17:52
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
виснет, ладно возьму #5, подсуну. =\
|
|
|

27.12.2007, 17:57
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
стой!
смотри, если работать так:
3 3
1 1 1
2 3 3
1 1 1
он в первый символ парвильно выводит, но последний - 0 =\
а если работать так:
3 3
3 1 1
2 1 1
3 1 1
это он праввильно считает
слушай, как чтоб выводило первую и последнюю цифры в отдельные переменные
|
|
|

27.12.2007, 17:58
|
|
Участник форума
Регистрация: 04.05.2007
Сообщений: 267
Провел на форуме: 409147
Репутация:
33
|
|
после отпишись 350-659-776 в аську, буду примерно через два часа:
спсибо
|
|
|
|
 |
|
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
мелочи, ПАскаль
|
rubik-nerubik |
С/С++, C#, Delphi, .NET, Asm |
5 |
27.12.2007 21:20 |
|
паскаль вопрос
|
rubik-nerubik |
С/С++, C#, Delphi, .NET, Asm |
1 |
16.12.2007 16:49 |
|
паскаль, вы программер?
|
rubik-nerubik |
С/С++, C#, Delphi, .NET, Asm |
45 |
15.12.2007 21:55 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|