|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.11.2011, 00:47 | #1 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
формирование масива с матрицы
Добрый Вечер.
Задание поставлено так: есть некая квадратная матрица of real; разрядность которой вводиться с клавы. Нужно сформировать с элементов матрицы вектор Х элементы которого будут результатом умножения элементов i-той строки матрицы ( которая, кстати, определяется по условию: количество отрицательных элементов строки равно количеству положительных элементов строки, но это пока не важно ) на элементы побочной диагонали этой же матрицы. Всё было бы просто, если бы разрядность матрицы была фиксированная, можно было бы обратится поэлементно и всё перемножить. Подскажите как можно реализовать умножение элементов строки на элементы побочной диагонали, а результат оформить у вектор с которым в дальнейшем нужно будет еще работать. |
11.11.2011, 15:37 | #2 |
Пользователь
Регистрация: 10.03.2008
Сообщений: 68
|
А в чём сейчас проблема обратиться поэлементно?
Циклом же |
11.11.2011, 22:40 | #3 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
Цыклом выделить нужную строчку do a[i,j]* (а как здесь выделить побочную диагональ?)
это я раньше над этим думал, пока не нашол вот это: k:=1; for i:=1 to 1 do for j:=1 to n do begin b[k]:=a[i,j]; k:=k+1; end; {выделяю нужную строчку; поэлементно заполняю масив } Только что-то не выходит с побочной диагональю таким вот цыклом: k:=1; for i:=1 to n do for j:=n to 1 do b2[k]:=a[i,j]; k:=k+1; end; наверное в чом-то элементарная ошибка. |
12.11.2011, 00:54 | #4 |
Форумчанин
Регистрация: 05.09.2011
Сообщений: 109
|
Неуверен, но попробуй:
Код:
Код:
|
12.11.2011, 01:32 | #5 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
for j:=n to 1 do От n до 1 если, то бред выходит ( если это двумерный масив )
Вот k:=1; for i:=1 to 1 do for j:=1 to n do begin b[k]:=a[i,j]; k:=k+1; end; writeln; for i:=1 to n{k-1} do write (b[i]:4); writeln; writeln; нашол строку. Вот for i:=1 to n do b2[i]:=a[i,n-i+1]; for i:=1 to n do write (b2[i]:4); writeln; writeln; побочную диагональ. Вот for i:=1 to n do b3[i]:=b2[i]*b[i]; for i:=1 to n do write (b3[i]:4); writeln; перемножил строку на побочную диагональ и получил вектор. Сейчас нужно определить с этой побочной диагонали максимальный елемент и разумееться его значение. Нашол в инете код: max:=B[0,Range]; for i:=0 to Range do begin j:=Range-i; if B[i,j]>max then max:=B[i,j] end; вроде отдельно прога норм идет, но если этот кусочек вставить в мой код то в результате ноль. |
12.11.2011, 01:51 | #6 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Если моя память не спит с другим, в паскале цикл со счетчиком-декрементом пишется так:
Код:
Alar, верни репу!
|
12.11.2011, 02:03 | #7 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
Naive,
надо вспоминать) а то я тут сотнями клепаю for i:=1 to n do, трудно что-то кроме этого во внимание взять)))) да и на определение максимального елемента код нашолся: Min := A[1, N]; for i := 2 to N do if A[ i, N+1 - i] < Min then Min := A[ i, N+1 - i]; WriteLn(Min); Вобщем пока галактеко безопасносте. ( на время сна ) |
12.11.2011, 13:26 | #8 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
Странно почему не получается:
if s>max then k:=1; for i:=1 to 1 do for j:=1 to n do begin b[k]:=a[i,j]; k:=k+1; end; writeln; for i:=1 to n{k-1} do write (b[i]:4); writeln; for i:=1 to n do b2[i]:=a[i,n-i+1]; for i:=1 to n do write (b2[i]:4); writeln; for i:=1 to n do b3[i]:=b2[i]*b[i]; for i:=1 to n do write (b3[i]:4);writeln; else for i:=1 to n do t[i]:=a[i,n-i+1]; for i:=1 to n do for j:=1 to n do t1[i]:=a[i,i]; for i:=1 to n do t2[i]:=t[i]+t1[i]; writeln; for i:=1 to n do write (t2[i]); end. Паскаль ругаеться на else. |
12.11.2011, 13:46 | #9 |
Раздолбайских Дел
Старожил
Регистрация: 22.05.2009
Сообщений: 3,828
|
Форматируй код по логическим блокам и тогда все будет понятно, что где и почему паскаль ругается:
Код:
Alar, верни репу!
|
12.11.2011, 13:50 | #10 |
Пользователь
Регистрация: 11.11.2011
Сообщений: 17
|
if s>max then begin
k:=1; for i:=1 to 1 do for j:=1 to n do begin b[k]:=a[i,j]; k:=k+1; end; writeln; for i:=1 to n{k-1} do write (b[i]:4); writeln; for i:=1 to n do b2[i]:=a[i,n-i+1]; for i:=1 to n do write (b2[i]:4); writeln; for i:=1 to n do b3[i]:=b2[i]*b[i]; for i:=1 to n do write ('huynyaAAA',b3[i]:4); end; else begin for i:=1 to n do t[i]:=a[i,n-i+1]; for i:=1 to n do for j:=1 to n do t1[i]:=a[i,i]; for i:=1 to n do t2[i]:=t[i]+t1[i]; writeln; for i:=1 to n do write ('huynyaBBB',t2[i]); end; end. Это я тоже пробывал, но ошибка таже: in statement. Зато такая форма: if s>max then begin k:=1; for i:=1 to 1 do for j:=1 to n do begin b[k]:=a[i,j]; k:=k+1; end; writeln; for i:=1 to n{k-1} do write (b[i]:4); writeln; for i:=1 to n do b2[i]:=a[i,n-i+1]; for i:=1 to n do write (b2[i]:4); writeln; for i:=1 to n do b3[i]:=b2[i]*b[i]; for i:=1 to n do write ('huynyaAAA',b3[i]:4); end; if s<max then begin for i:=1 to n do t[i]:=a[i,n-i+1]; for i:=1 to n do for j:=1 to n do t1[i]:=a[i,i]; for i:=1 to n do t2[i]:=t[i]+t1[i]; writeln; for i:=1 to n do write ('huynyaBBB',t2[i]); end; end. удачно компилируется. Последний раз редактировалось MD1; 12.11.2011 в 13:59. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формирование матрицы соединений! | chege | Microsoft Office Excel | 2 | 15.10.2011 11:05 |
Формирование вектора из матрицы | LittleStudent | Помощь студентам | 3 | 07.05.2011 17:47 |
формирование матрицы из файла | Олег093 | Помощь студентам | 1 | 24.04.2011 19:56 |
Формирование матрицы рассечением | Mikhail Bakurov | Помощь студентам | 4 | 31.01.2010 13:39 |
Формирование матрицы по спирали | RomT24 | Помощь студентам | 5 | 18.01.2010 02:38 |