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

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

21.01.2012, 15:25. Просмотров 1071. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 15:25
Ответы с готовыми решениями:

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

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

Найти максимальные элементы каждой строки и поместить их на главную диагональ, а диагональные элементы поместить на место максимальных
Найти максимальные элементы каждой строки исходной матрицы А(N,N) (N&lt;=10) и поместить их на главную...

Вычислить скалярное произведение второй строки матрицы на не главную диагональ
Вычислить скалярное произведение 2-го рядка 2мерного массива на не главную диагональ.Массив 7х7. ...

Сформировать главную диагональ матрицы из максимальных элементов, перемещая строки и столбцы
зарегистрироваться в файл двумерный A массив размером n*n. работу программы нужна начат с чтения...

10
Фаер
643 / 372 / 259
Регистрация: 09.12.2011
Сообщений: 734
Записей в блоге: 35
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
Indigo74
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
Puporev
Модератор
57279 / 43708 / 30197
Регистрация: 18.05.2008
Сообщений: 104,223
22.01.2012, 11:59 4
Цитата Сообщение от Indigo74 Посмотреть сообщение
b:=[];
Ведь написано же
Pascal
1
var b: set of byte;//это множество чисел типа byte
Добавлено через 1 минуту
В нем содержатся индексы уже проверенных столбцов или строк, в начале оно пустое, что и означает
Pascal
1
b:=[];
1
22.01.2012, 11:59
Indigo74
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
Puporev
Модератор
57279 / 43708 / 30197
Регистрация: 18.05.2008
Сообщений: 104,223
22.01.2012, 13:02 6
Цитата Сообщение от Indigo74 Посмотреть сообщение
переменная (y) изменяется.... от чего он зависает... впрочем... как идет цикл с (y) , там понятно что он увеличивается.... а еще что?
Очень содержательный вопрос. Ответ тоже типа этого
Ясность неясности неясна.
0
Indigo74
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
Puporev
Модератор
57279 / 43708 / 30197
Регистрация: 18.05.2008
Сообщений: 104,223
22.01.2012, 13:21 8
y это просто счетчик строк как например j счетчик столбцов
1
Indigo74
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 13:21  [ТС] 9
ну это тоже понятно... не совсем ясно как он изменяется....
0
Puporev
Модератор
57279 / 43708 / 30197
Регистрация: 18.05.2008
Сообщений: 104,223
22.01.2012, 13:23 10
Indigo74, А тебе не кажется, что тебе это в принципе не дано понять? Бывает и такое...
0
Indigo74
0 / 0 / 0
Регистрация: 09.01.2012
Сообщений: 43
22.01.2012, 13:27  [ТС] 11
Цитата Сообщение от Puporev Посмотреть сообщение
Indigo74, А тебе не кажется, что тебе это в принципе не дано понять? Бывает и такое...
не соглашусь) я просто подзабыл все это... пытаюсь с помнить...если мне это было бы не нужна стал бы я тут мучить вас?
я понимаю что он погонят заново увеличиваясь...
0
22.01.2012, 13:27
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 13:27

Найти сумму максимума и минимума в каждой матрице. В той матрице, где сумма больше, обнулить главную и побочную диагональ
Очень не укладываюсь в срок помогите подготовить программу: Даны две квадратные матрицы A и B....

сумма элементов каждой строки матрицы, максимум и минимум
1 задача звучит так: описать подпрограмму, которая в матрице, размером n*m, находит сумму элементов...

Обнулить главную диагональ матрицы
Дан двумерный массив А(5,5) в виде квадратной матрицы. Составьте программу, обнуляющую главную...


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

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

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