Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2012, 15:41   #1
xxxartikxxx
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 23
По умолчанию Вектор

Помогите решить задачу

Из матрицы A получить компоненты вектора X={xi}, i=1,2,...,n, в качестве вектора принять главную диагональ матрицы , которая преобразована следующим образом: в начале каждой строки должны быть ее неотрицательные элементы, а в конце - отрицательные элементы (с сохранением порядка следования тех или иных элементов).

код матрицы:

program matrx;
type
Matr=array[1..20,1..20]of real;
var
i,j,n:integer ;
a:Matr;
begin
writeln;
writeln('vedite n');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
a[i,j] := -2 * (j / 2 - 3.1) * (i - 3.9) + Exp(2.5*Ln(i * j))- 10;
write('a[',i,',',j,']=',a[i,j]:6:2,' ');
end;
writeln;
readln;
end.
xxxartikxxx вне форума Ответить с цитированием
Старый 28.11.2012, 16:00   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
program matrx;

const
  maxsize = 100;

type
  Matr = array[1..maxsize, 1..maxsize] of real;

var
  i, j, k, n: integer;
  tmp: real;
  a, b: Matr;

begin
  writeln;
  writeln('vedite n');
  readln(n);
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a[i, j] := -2 * (j / 2 - 3.1) * (i - 3.9) + Exp(2.5 * Ln(i * j)) - 10;
      write(a[i, j]:10:2);
    end;
    writeln;
  end;
  b := a;
  for k := 1 to n do
    for i := 2 to n do
      if b[k, i] >= 0 then
      begin
        j := i - 1;
        while (j > 0) and (b[k, j] < 0) do
        begin
          tmp := b[k, j + 1];
          b[k, j + 1] := b[k, j];
          b[k, j] := tmp;
          dec(j);
        end;
      end;
  writeln;
  writeln;
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(b[i, j]:10:2);
    writeln;
  end;
  readln;
end.
Добавил сортировку, правда, не уверен в ее целесообразности в этой задаче.
Используйте кнопочку # для оформления кода.
Думаю, что Вы легко сможете теперь получить вектор Х.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 28.11.2012, 16:06   #3
xxxartikxxx
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 23
По умолчанию

Большое спасибо, вы мне очень помогли!

Последний раз редактировалось xxxartikxxx; 28.11.2012 в 16:09.
xxxartikxxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вектор... Berus Помощь студентам 4 16.11.2012 10:06
Вектор С++ Наталья-1989 Помощь студентам 4 05.12.2011 09:37
Вектор KAHT Общие вопросы C/C++ 2 29.05.2011 12:38
Вектор kop Общие вопросы Delphi 2 25.05.2011 00:55
Вектор? Slavik Microsoft Office Excel 0 23.02.2009 10:30