IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Обработка многомерных массивов
Connected
сообщение 19.03.2007 20:43
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


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

Если возможно, представить схему алгоритма решения.

Есть вот такой пример:

Задание: В матрице К размерности N х M поменять местами строки содержащие минимальный и максимальный элемент. Вывести полученную матрицу в общепринятом виде.
Приведем программу решения этой задачи. Так как строка матрицы представляет собой одномерный массив, то для обмена двух строк матрицы нам понадобится дополнительный одномерный массив К1. Для того, чтобы обмен одномерных массивов можно было производить так же легко, как и с переменными простых типов данных, введем новый тип KKK = array [1..20] of real. Тогда матрицу К можно описать как одномерный массив, состоящий из строк типа ККК.
program lab5;
uses crt;
type
KKK = array [1..20] of real;
var
K : array [1..20] of KKK;
K1 : KKK;
i, j, n, m, imax, imin : integer;
max,min:real;
begin
clrscr;
writeln('Введите размерность матрицы K:');
write('Число строк : '); readln(n);
write('Число столбцов : '); readln(m);
writeln('Введите элементы матрицы K:');
for i:=1 to n do
for j:=1 to m do
begin
gotoxy(j*5,i+4);
readln(K[i,j]);
end;
max:=K[1,1]; imax:=1;
min:=K[1,1]; imin:=1;
for i:=1 to n do
for j:=1 to m do
begin { Начинаем поиск строк }
if K[i,j]>max then { с max и min элементами}
begin
max:=K[i,j]; imax:=i;
end;
if K[i,j]<min then
begin
min:=K[i,j]; imin:=i;
end;
end;
K1:=K[imax]; {Обмен строк}
K[imax]:=K[imin];
K[imin]:=K1;
writeln('Массив после перестановки строк:');
for i:=1 to n do
for j:=1 to m do
begin
gotoxy(j*5,i+n+5);
writeln(K[i,j]:5:1);
end;
readkey;
end.

ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО!
М
Connected, используй теги! Выдели текст проги блоком и выбери нужный тип в выпадающем меню над окном ввода.
Lapp



Сообщение отредактировано: Lapp - 20.03.2007 2:00
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Адель
сообщение 19.03.2007 21:57
Сообщение #2


Иллюзия мира
***

Группа: Пользователи
Сообщений: 180
Пол: Женский

Репутация: -  4  +


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


с любым элементом диагонали??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 19.03.2007 22:21
Сообщение #3


Гость






Цитата
с любым элементом диагонали??
Судя по условию - находящимся в той же строке...
 К началу страницы 
+ Ответить 
Lapp
сообщение 20.03.2007 2:23
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Connected, вот фрагмент, который делает, что тебе надо. Разберись с ним. Если не сможешь сам сделать блок-схему - спрашивай..

  for j:=1 to n do begin
k:=1; { принмаем первый за максимальный }
{проходим по строке, если встречаем больший элемент - запоминаем номер}
for i:=2 to n do if p[i,j]>p[k,j] then k:=i;
b:=p[j,j]; {перекладываем диагональный элемент в буфер}
p[j,j]:=p[k,j]; {кладем максимальный в диагональный}
p[k,j]:=b {кладем буфер на место максимального}
end;




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Connected
сообщение 20.03.2007 17:56
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


А что до этого надо писать? Ну там clr scr или что? Я в программировании "0" unsure.gif

Блок схему тоже не получается составить...=(((

Сообщение отредактировано: Connected - 20.03.2007 17:58
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Connected
сообщение 20.03.2007 19:43
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Кто-то может полностью программу написать?

Сообщение отредактировано: Connected - 25.03.2007 13:39
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.03.2007 14:08
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Ну, пимерно так можно..
Я тут заполнял матрицу случайными числами. Число n вводи не очень большое, 4 - 9 примерно, иначе могут быть проблемы с выводом матрицы.
const
MaxN=100;

var
p:array[1..MaxN,1..MaxN]of real;
i,j,k,n:integer;
b:real;

procedure Show;
var
i,j:integer;
begin
for j:=1 to n do begin
for i:=1 to n do Write(p[i,j] :8 :2);
WriteLn
end
end;

begin
Write('n=');ReadLn(n);
for j:=1 to n do for i:=1 to n do p[i,j]:=200*Random-100;
WriteLn('Input:');
Show;
{Тут вставляешь тот фрагмент, что я написал выше}
WriteLn('Output:');
Show
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Connected
сообщение 25.03.2007 16:18
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


ок. спасибо. а как блок схему составить?

Сообщение отредактировано: Connected - 25.03.2007 16:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.03.2007 1:11
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Connected @ 25.03.2007 16:18) *

как блок схему составить?

Я снабдил прогу подробными комментариями. Имея все это, нетрудно составить блок-схему. Составь сам и покажи здесь. Если что-то будет не так - поможем исправить..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Connected
сообщение 26.03.2007 14:27
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


попробую yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"