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

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

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

 
 Ответить  Открыть новую тему 
> Матрица!
Анька
сообщение 8.12.2004 14:10
Сообщение #1


Гость






Помогите, :p2: пожалуйста, решить 3 задачки, я уже целый день над ними сижу, но ничего не получается!!!
1.
Матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива по строкам. Восстановить исходную квадратную матрицу и напечатать по строкам.
2.
Заданную квадратную матрицу преобразовать, используя умножение строки на число и сложение строк, таким образом, чтобы все элементы первого столбца обратились в нуль, кроме элемента, расположенного на главной диагонали.
3.
Дана вещественная матрица размером N х N, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.
 К началу страницы 
+ Ответить 
volvo
сообщение 8.12.2004 17:56
Сообщение #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]);
 К началу страницы 
+ Ответить 
Анька
сообщение 9.12.2004 4:59
Сообщение #3


Гость






volvo :D СПАСИБО!!!


Может кто-нибудь с остальными задачками поможет, пожа-а-алуйста :molitva: !!!
 К началу страницы 
+ Ответить 
xds
сообщение 9.12.2004 7:36
Сообщение #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 - 9.12.2004 7:37


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 9.12.2004 8:20
Сообщение #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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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