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

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

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

> Преобразование прямоугольной матрицы, Помогите с решением
сообщение
Сообщение #1





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

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


Народ помогите с задачей:
Дана матрица B размером m*n и вектор C размером k, нужно заменить вектором С столбцы марицы B, не содержащие ни одного отрицательного элемента?
Я эту задачу начал делать, но не могу сообразить какой цикл там надо применять при замене столбца на вектор. Помогите с решением. Плиз. Заранее спасибо!
Вот начало моей программы:

program matrica;
coust m1=15; n1=15; k1=15;
type index_1=1..m1;
index_2=1..n1;
index_3=1..k1;
matrix=array[index_1,index_2] of real;
vector=array[index_3] of real;
var m,i: index_1;
n,j: index_2;
k,l: index_3;
B:matrix;
C:vector;
begin
write ('Число строк матрицы В m= ');
readln(m);
write ('Число столбцов матрицы В n= ');
readln(n);
write ('Число элементов вектора C k= ');
readln(k);
writeln (' ':23,'Введите элементы матрицы B');
for i:=1 to m do for j:=1 to n do
begin
write ('A[',i,',',j,']=');
readln (a[i,j]);
end;
writeln (' ':23,'Введите элементы вектора C');
for l:=1 to k do
begin
write ('C[',i,']=');
readln (c[l]);
end;
...............

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Да не так ты мыслишь... Вот что я имел в виду:
type
column = array[1 .. m1] of real;
matrix = array[1 .. n1] of column;
vector = array[1 .. k1] of real;

function has_negative(clmn: column): boolean;
var i: integer;
begin
has_negative := false;
for i := 1 to m1 do if clmn[i] < 0 then has_negative := true;
end;

var
T: column;
...
writeln (' ':23,'Введите элементы матрицы B');
for i:=1 to m do
for j:=1 to n do begin
write ('A[',i,',',j,']=');
readln (a[j][i]); { <--- Внимание на индексы !!! Первый - столбец, второй - строка }
end;

...
{ для проверки, есть ли в столбце хоть один отр. элемент и замены столбца вектором: }
{ сначала подготовим вектор - вдруг длина разная... }
for i := 1 to min(k, m1) do T[i] := C[i]; { недостающие будут нулями, лишние - отсекутся}

{ Добавлено!!! Предыдущая строка вообще не нужна, если константа K1 равна константе M1 }

for i := 1 to n do { <--- проходим по всем столбцам }
if has_negative(a[i]) then a[i] := T; { <--- и заменяем если надо }
...

(функцию min придется написать самому...)
При распечатке матрицы надо учитывать то же самое, что и при вводе - индексы меняются местами!

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Ого как сложно!!! unsure.gif
Слушай, извини за наглость, но не мог бы ты объяснить вот эти строчки кода, а то я совсем их не понял:
type
column = array[1 .. m1] of real;
matrix = array[1 .. n1] of column; {А почему здесь матрица, представлена как одномерный массив?}
vector = array[1 .. k1] of real;

function has_negative(clmn: column): boolean;
var i: integer;
begin
has_negative := false;
for i := 1 to m1 do if clmn[i] < 0 then has_negative := true;
end;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 24.04.2024 22:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name