Матрица! |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Матрица! |
Анька |
Сообщение
#1
|
Гость |
Помогите, :p2: пожалуйста, решить 3 задачки, я уже целый день над ними сижу, но ничего не получается!!!
1. Матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива по строкам. Восстановить исходную квадратную матрицу и напечатать по строкам. 2. Заданную квадратную матрицу преобразовать, используя умножение строки на число и сложение строк, таким образом, чтобы все элементы первого столбца обратились в нуль, кроме элемента, расположенного на главной диагонали. 3. Дана вещественная матрица размером N х N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом. |
volvo |
Сообщение
#2
|
Гость |
3.
Код const n = 4; maxElem = 50; var st: set of 1 .. maxElem; var a: array[1 .. n, 1 .. n] of integer; max, min, min_col, max_row: integer; i, j, k, p: integer; begin (* randomize; st := []; *) for i := 1 to n do for j := 1 to n do begin write('a[', i:2, ',', j:2, '] = '); readln(a[i, j]); (* repeat k := random(maxElem) + 1; until not (k in st); a[i, j] := k; st := st + [k] *) end; max := -maxInt; min := maxInt; for i := 1 to n do for j := 1 to n do begin if a[i, j] < min then begin min := a[i, j]; min_col := j end; if a[i, j] > max then begin max := a[i, j]; max_row := i end; end; p := 0; for i := 1 to n do p := p + a[max_row, i]*a[i, min_col]; writeln( 'p = ', p ) end. Приведенная выше программа запрашивает ввод матрицы у пользователя. Если нужно сгенерировать такую матрицу размером N х N, все элементы которой различны, можно просто убрать все символы (* *) и строки: Код write('a[', i:2, ',', j:2, '] = '); readln(a[i, j]); |
Анька |
Сообщение
#3
|
Гость |
volvo :D СПАСИБО!!!
Может кто-нибудь с остальными задачками поможет, пожа-а-алуйста :molitva: !!! |
xds |
Сообщение
#4
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Задача 1.
Код program RestMatr; var a: array[1..100, 1..100] of Integer; i, j, iv, n: Integer; begin Write('n = '); Readln(n); n := (Round(Sqrt(8 * n + 1)) - 1) div 2; iv := 1; for i := 1 to n do for j := i to n do begin Write('V[', iv, '] = '); Inc(iv); Read(a[i, j]); a[j, i] := a[i, j]; end; for i := 1 to n do begin for j := 1 to n do Write(a[i, j]:3); Writeln; end; end. Сообщение отредактировано: xds - -------------------- The idiots are winning.
|
xds |
Сообщение
#5
|
N337 Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: 26 |
Задача 2.
Код program XMatr; { НОД } function GCD(n, m: Integer): Integer; begin repeat if n > m then n := n mod m else m := m mod n; until (n = 0) or (m = 0); if n = 0 then GCD := m else GCD := n; end; var n, i, j, k1, k2: Integer; a: array[1..100, 1..100] of Integer; begin Write('n> '); Readln(n); Randomize; for i := 1 to n do for j := 1 to n do a[i, j] := -9 + Random(20); Writeln('Исходная матрица:'); for i := 1 to n do begin for j := 1 to n do Write(a[i, j]: 4); Writeln; end; Writeln; for i := 2 to n do begin k1 := GCD(Abs(a[1, 1]), Abs(a[i, 1])); k2 := -a[1, 1] div k1; k1 := a[i, 1] div k1; for j := 1 to n do a[i, j] := a[i, j] * k2 + a[1, j] * k1; end; Writeln('Преобразованная матрица:'); for i := 1 to n do begin for j := 1 to n do Write(a[i, j]: 4); Writeln; end; end. -------------------- The idiots are winning.
|
Текстовая версия | 11.01.2025 23:01 |