Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
1

Найти минимум каждой строки матрицы исключая главную диагональ

21.01.2012, 15:25. Просмотров 1171. Ответов 10
Метки нет (Все метки)

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Program Matrica_Random;
 
Uses crt;   // подключаем модули
 
Type
mat = array [1..100,1..100] of integer ;
 
var
b: set of byte;
a:mat;
i,j,m,n,jmin,sum,x,y:integer; { индексы массива }
 
begin { начало основной программы }
 b:=[];
 clrscr;   { очищает текстовое окно}
 randomize; { активирован Генератор Случайных Чисел ( Г.С.Ч. ) }
 Write('Количество строк: ');readln(m);
 Write('Количество столбцов: ');readln(n);
{------------------------------------------------------------------------------- формируем матрицу }
x:=1;
 Writeln('Исходная матрица:');
 For i:=1 to m do
   For j:=1 to n do
   begin
   write('a[',i,',',j,'] = ');
   readln(a[i,j]);
   end;
 clrscr;
 For i:=1 to m do
 begin
   For j:=1 to n do
   write(a[i,j]:5);
 writeln;
 end;
jmin:=2;
while y<=m do
begin
For j:=1 to n do   { перебор всех элементов строки по столбцам }
  If not (j in b) then
    If (a[x,j]<a[x,jmin]) and (x<>j) then jmin:=j;
sum:=sum+a[x,jmin];
b:=b+[jmin];
x:=jmin;
inc(y);
For i:=1 to m do
If not (i in b) then begin jmin:=i; break; end;
end;
{------------------------------------------------------------------------------ матрица сформирована }
Writeln('Сумма минимальных эл-тов = ',sum);
 readkey; { читает символ из буфера клавиатуры.}
end.
можешь пояснить ? или расписать что вот эти строки делают?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
jmin:=2;
while y<=m do
begin
For j:=1 to n do { перебор всех элементов строки по столбцам }
If not (j in b) then
If (a[x,j]<a[x,jmin]) and (x<>j) then jmin:=j;
sum:=sum+a[x,jmin];
b:=b+[jmin];
x:=jmin;
inc(y);
For i:=1 to m do
If not (i in b) then begin jmin:=i; break; end;
end;
П.С
b:=[];
- это одномерный динамический массив? как он изменяется?
поясните пожалуйста ,а то подзабыл все 2 года не сталкивался с паскалем... а тут понадобилась...

Добавлено через 4 часа 54 минуты
Условие к задачи
Дана матрица A[i;j] размером 4х4 .
но есть загвоздка....надо найти минимум каждой строки исключаю главную диагональ , но например смотрин на 1 строку там у нас минимум находится в 3 столбце 219 мы его запоминаем, но при этом зачеркиваем 3 столбец и мы переходим сразу на 3 строчку....там у нам минимум в 4 столбце 112 мы его тоже запоминаем и опять зачеркиваем столбец и переходим на 4 строчку там у нас минимум находится во 2 столбце 144 мы опять его запоминаем зачеркиваем столбец и переходим на 2 строчку там минимум 225 . и В итоге мы суммируем все минимумы у получаем ответ 700.
к примеру дана матрица
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.01.2012, 15:25
Ответы с готовыми решениями:

Найти минимальный элементов каждый строки матрицы, исключая главную диагональ
дана матрица A размером 4х4 . но есть загвоздка....надо найти минимум каждой строки исключаю...

Найти наибольшие элементы каждой строки матрицы и поместить их на главную диагональ
Найти наибольшие элементы каждой строки матрицы Z(16,16) и поместить их на главную диагональ....

Найти наименьшие элементы каждой строки квадратной матрицы и поместить их на главную диагональ
где ошибка ? нужно найти малейшие элементы каждой строки квадратной матрицы и поместить их на...

Вычислить сумму элементов каждой строки матрицы и записать данные значения в главную диагональ матрицы
1)Вычислить сумму элементов каждой строки матрицы и записать данные значения в главную диагональ...

10
651 / 380 / 259
Регистрация: 09.12.2011
Сообщений: 749
Записей в блоге: 29
21.01.2012, 17:54 2
Цитата Сообщение от Indigo74 Посмотреть сообщение
Условие к задачи
Дана матрица A[i;j] размером 4х4 .
но есть загвоздка....надо найти минимум каждой строки исключаю главную диагональ
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Program Minimum;
Uses crt;
Var A:array[1..4,1..4] of integer; min:array[1..4] of integer;
k,i,j:integer;
Begin
 
ClrScr;
For i:=1 to 4 do
  For j:=1 to 4 do
  Begin
  Write('A[i,j]='); Readln(A[i,j]); {ввод значений элементов массива}
  min[i]:=9999; {минимум для каждой строки}
End;
ClrScr;
For i:=1 to 4 do
  For j:=1 to 4 do
  Begin
  TextColor(2);
  If i=j then TextColor(4); {выделение главной диагонали красным цветом}
  Write(A[i,j]:7);
  If j=4 then Writeln;
  If (j<>i) and (A[i,j]<min[i]) then min[i]:=A[i,j]; {поиск минимума для каждой строки}
End;
 
For i:=1 to 4 do
  Begin
  Writeln('Min',i,'=',min[i]);
  End;
Readln;
End.
1
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 11:41  [ТС] 3
Цитата Сообщение от КиберПёс Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Program Minimum;
Uses crt;
Var A:array[1..4,1..4] of integer; min:array[1..4] of integer;
k,i,j:integer;
Begin
 
ClrScr;
For i:=1 to 4 do
  For j:=1 to 4 do
  Begin
  Write('A[i,j]='); Readln(A[i,j]); {ввод значений элементов массива}
  min[i]:=9999; {минимум для каждой строки}
End;
ClrScr;
For i:=1 to 4 do
  For j:=1 to 4 do
  Begin
  TextColor(2);
  If i=j then TextColor(4); {выделение главной диагонали красным цветом}
  Write(A[i,j]:7);
  If j=4 then Writeln;
  If (j<>i) and (A[i,j]<min[i]) then min[i]:=A[i,j]; {поиск минимума для каждой строки}
End;
 
For i:=1 to 4 do
  Begin
  Writeln('Min',i,'=',min[i]);
  End;
Readln;
End.
Спасибо конечно ) но я хотел бы что бы мне пояснили мой вариант задачи.... строки которые я отделил от основной программы....

Добавлено через 44 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Program Matrica_Random;
 
Uses crt;   // подключаем модули
 
Type
mat = array [1..100,1..100] of integer ;
 
var
b: set of byte;
a:mat;
i,j,m,n,jmin,sum,x,y:integer; { индексы массива }
 
begin { начало основной программы }
 b:=[];
 clrscr;   { очищает текстовое окно}
 randomize; { активирован Генератор Случайных Чисел ( Г.С.Ч. ) }
 Write('Количество строк: ');readln(m);
 Write('Количество столбцов: ');readln(n);
{------------------------------------------------------------------------------- формируем матрицу }
x:=1;
 Writeln('Исходная матрица:');
 For i:=1 to m do
   For j:=1 to n do
   begin
   write('a[',i,',',j,'] = ');
   readln(a[i,j]);
   end;
 clrscr;
 For i:=1 to m do
 begin
   For j:=1 to n do
   write(a[i,j]:5);
 writeln;
 end;
jmin:=2;
while y<=m do
begin
For j:=1 to n do   { перебор всех элементов строки по столбцам }
  If not (j in b) then
    If (a[x,j]<a[x,jmin]) and (x<>j) then jmin:=j;
sum:=sum+a[x,jmin];
b:=b+[jmin];
x:=jmin;
inc(y);
For i:=1 to m do
If not (i in b) then begin jmin:=i; break; end;
end;
{------------------------------------------------------------------------------ матрица сформирована }
Writeln('Сумма минимальных эл-тов = ',sum);
 readkey; { читает символ из буфера клавиатуры.}
end.
можешь пояснить ? или расписать что вот эти строки делают?


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
jmin:=2;
while y<=m do
begin
For j:=1 to n do { перебор всех элементов строки по столбцам }
If not (j in b) then
If (a[x,j]<a[x,jmin]) and (x<>j) then jmin:=j;
sum:=sum+a[x,jmin];
b:=b+[jmin];
x:=jmin;
inc(y);
For i:=1 to m do
If not (i in b) then begin jmin:=i; break; end;
end;
П.С
b:=[];
- это одномерный динамический массив? как он изменяется?
поясните пожалуйста ,а то подзабыл все 2 года не сталкивался с паскалем... а тут понадобилась...
0
Модератор
62560 / 46727 / 32205
Регистрация: 18.05.2008
Сообщений: 113,089
22.01.2012, 11:59 4
Цитата Сообщение от Indigo74 Посмотреть сообщение
b:=[];
Ведь написано же
Pascal
1
var b: set of byte;//это множество чисел типа byte
Добавлено через 1 минуту
В нем содержатся индексы уже проверенных столбцов или строк, в начале оно пустое, что и означает
Pascal
1
b:=[];
1
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 12:48  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
Ведь написано же
Pascal
1
var b: set of byte;//это множество чисел типа byte
Добавлено через 1 минуту
В нем содержатся индексы уже проверенных столбцов или строк, в начале оно пустое, что и означает
Pascal
1
b:=[];
спасибо !
подскажи как переменная (y) изменяется.... от чего он зависает... впрочем... как идет цикл с (y) , там понятно что он увеличивается.... а еще что?
0
Модератор
62560 / 46727 / 32205
Регистрация: 18.05.2008
Сообщений: 113,089
22.01.2012, 13:02 6
Цитата Сообщение от Indigo74 Посмотреть сообщение
переменная (y) изменяется.... от чего он зависает... впрочем... как идет цикл с (y) , там понятно что он увеличивается.... а еще что?
Очень содержательный вопрос. Ответ тоже типа этого
Ясность неясности неясна.
0
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 13:18  [ТС] 7
Цитата Сообщение от Indigo74 Посмотреть сообщение
спасибо !
подскажи как переменная (y) изменяется.... от чего он зависает... впрочем... как идет цикл с (y) , там понятно что он увеличивается.... а еще что?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
jmin:=2;
while y<=m do
begin
For j:=1 to n do { перебор всех элементов строки по столбцам }
If not (j in b) then
If (a[x,j]<a[x,jmin]) and (x<>j) then jmin:=j;
sum:=sum+a[x,jmin];
b:=b+[jmin];
x:=jmin;
inc(y);
For i:=1 to m do
If not (i in b) then begin jmin:=i; break; end;
end;
0
Модератор
62560 / 46727 / 32205
Регистрация: 18.05.2008
Сообщений: 113,089
22.01.2012, 13:21 8
y это просто счетчик строк как например j счетчик столбцов
1
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 13:21  [ТС] 9
ну это тоже понятно... не совсем ясно как он изменяется....
0
Модератор
62560 / 46727 / 32205
Регистрация: 18.05.2008
Сообщений: 113,089
22.01.2012, 13:23 10
Indigo74, А тебе не кажется, что тебе это в принципе не дано понять? Бывает и такое...
0
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 13:27  [ТС] 11
Цитата Сообщение от Puporev Посмотреть сообщение
Indigo74, А тебе не кажется, что тебе это в принципе не дано понять? Бывает и такое...
не соглашусь) я просто подзабыл все это... пытаюсь с помнить...если мне это было бы не нужна стал бы я тут мучить вас?
я понимаю что он погонят заново увеличиваясь...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2012, 13:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вывести на печать главную диагональ матрицы и диагональ расположенной под ней в 2 строки
Как вывести на печать главную диагональ матрицы и диагональ расположенной под ней в 2 строки?...

Найти наибольшие элементы строки матрицы и записать их в главную диагональ
Необходимо найти наибольшие элементы строки матрицы и записать их значения в элементы главной...

Найти максимальный элемент матрицы исключая диагональ элементов
Дана квадратная матрица D. Найти максимальный элемент матрицы исключая диагональ элементов.

Для каждой матрицы определить максимальные элементы в строках и переместить их на главную диагональ
Всем доброго времени суток. Не могу понять, как определить максимальный елемент для каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.