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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 15:18   #1
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию 2 задания(Двумерные массивы)

Написал программу, всё сделал, и вконце неправильно выводить, помогите найти ошибку.
1.Дана матрица размера M x N. Продублировать строку матрицы, содержащую ее минимальный элемент.
это задание.
вот код
Код:
procedure TForm1.Button2Click(Sender: TObject);

var A:array [1..100,1..100] of integer;
minA:array[1..100] of integer;
imin,jmin,m,n,p,i,j,min:integer;

begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
for j:=1 to m do
for i:=1 to n do
a[i,j]:=strtoint(stringgrid1.Cells[i-1,j-1]);
for i:=1 to n do begin
for j:=1 to m do
min:=a[1,1];
if a[i,j]<=min then min:=a[i,j];
imin:=i;
jmin:=j;
For j:=1 to n do
stringgrid2.Cells[j-1,0]:=inttostr(A[j,imin]);
end;
end;
end.
MyaSnIKs вне форума Ответить с цитированием
Старый 25.03.2009, 15:21   #2
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

У тебя всегда же сравниваться начинаетс а[1,1], а ты присваивай первый элемент текущей строки
От знаний ещё никто не умирал, но рисковать не стоит.
XuTpbIu вне форума Ответить с цитированием
Старый 25.03.2009, 15:22   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if a[i,j]<=min then begin 
 min:=a[i,j];
 imin:=i;
 jmin:=j;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.03.2009, 15:25   #4
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
imin:=1;
jmin:=1;
for i:=1 to n do 
for j:=1 to m do
if a[i,j]<a[imin,jmin] then begin
imin:=i;
jmin:=j;
end;
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 25.03.2009, 15:39   #5
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Код:
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
for j:=1 to m do
for i:=1 to n do
a[i,j]:=strtoint(stringgrid1.Cells[i-1,j-1]);
imin:=1;
jmin:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]<a[imin,jmin] then begin
a[imin,jmin]:=a[i,j];
imin:=i;
jmin:=j;
end;
for j:=1 to n do
stringgrid2.Cells[j-1,0]:=inttostr(A[j,imin]);
end;

end.
он у меня как то странно очень цифры выводит в матрицу вторую, то по диагонали, то правильно строкой, то хз как...
Если не лень коперните мой код, и исправьте прям в нём.
MyaSnIKs вне форума Ответить с цитированием
Старый 25.03.2009, 15:43   #6
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
for j:=1 to m do
и
Код:
for j:=1 to n do
stringgrid2.Cells[j-1,0]:=inttostr(A[j,imin]);
Заполняйте матрицу единообразно, чтобы не было сомнений
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 25.03.2009 в 15:49.
alex_fcsm вне форума Ответить с цитированием
Старый 25.03.2009, 15:47   #7
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

всё нашёл свою затупку, огромное спасибо помогавшим=)

Хотя у меня вопрос вот один по другой задаче, я как бы решать знаю как её. но я не знаю, как искать только в диагонале
Дана квадратная матрица порядка M. Вывести минимальные из элементов каждой ее диагонали, параллельной побочной диагонали.
не подскажите просто, как обозначить диагональ?

Последний раз редактировалось Stilet; 25.03.2009 в 15:59.
MyaSnIKs вне форума Ответить с цитированием
Старый 25.03.2009, 15:53   #8
XuTpbIu
Злобстер
Форумчанин
 
Аватар для XuTpbIu
 
Регистрация: 19.03.2009
Сообщений: 134
По умолчанию

Условие что элемент находится на побочной диагонали: I+J = M-1
Условие что элемент лежит на диагонали параллельной побочно диагонали и выше неё: I+J=M-1+k
Условие что элемент лежит на диагонали параллельной побочно диагонали и ниже неё: I+J=M-1-k
k - номер диагонали параллельной боковой
От знаний ещё никто не умирал, но рисковать не стоит.

Последний раз редактировалось XuTpbIu; 25.03.2009 в 15:58.
XuTpbIu вне форума Ответить с цитированием
Старый 25.03.2009, 15:57   #9
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

ВО!
А я не мог вспомнить!
Спасиб большое=)
MyaSnIKs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы angelangel Общие вопросы C/C++ 2 22.12.2008 15:47
Задания по ДЕЛФИ (массивы, потом с использованием файлов и строк) ramaboss Помощь студентам 11 14.12.2008 17:29
Паскаль.Легкие задания на массивы KEF Помощь студентам 2 12.12.2007 07:12