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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2010, 14:08   #1
k0tone
Пользователь
 
Аватар для k0tone
 
Регистрация: 09.11.2010
Сообщений: 99
Вопрос работа с массивами (Pascal)

1. Получить элементы квадратной матрицы А=|a[i,j] |, где i,j=1, ..., n,
a[i,j] = (-2)*((j/2)-3.1)*(i-3.9)+(2.5^i)*j–10
2. Из матрицы A получить компоненты вектора X={x[i]}, i=1,2,...,n, по следующему правилу (в качестве вектора принять главную диагональ матрицы, которая преобразована следующим образом: в начале каждой строки должны быть ее неотрицательные элементы, а в конце - отрицательные элементы (с сохранением порядка следования тех или иных элементов)).
3. Преобразовать вектор в соответствии с правилом по варианту
i-й элемент вектора равен (х[i]-х[i+1])/2, где i=1,n-1.

Вот мои наработки, подскажите я правильно сделал 3-е задание или нет?

Код:
program test;
uses crt;
const n=4;
var a:array [1..n, 1..n] of real;
    x:array [1..n] of real;
    i,j:integer;
    z:real;
begin
  clrscr;
  z:=2.5;
  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)+(z*j)-10;
          write(a[i,j]:11:3);
        end;
      z:=z*2.5;
      writeln;
    end;
  writeln;
  for j:=1 to n do
    for i:=1 to n-1 do

      if (a[i,i]<0) then
      if (a[i,i]*a[i+1,i+1]<=0) then
        begin
          z:=a[i+1,i+1];
          a[i+1,i+1]:=a[i,i];
          a[i,i]:=z;
        end;
  for i:=1 to n do
    write(a[i,i]:11:3);
    writeln;
  for i:=1 to n-1 do
    begin
      x[i]:=(a[i,i]-a[i+1,i+1])/2;
      write(x[i]:11:3);
    end;
  readln;
end.
P.P.S. как понять следующее :
в матрице найти первую по порядку строку с наибольшей суммой ее элементов и в качестве компонент вектора принять упорядоченные по возрастанию элементы этой строки.
Что значит первую по порядку ? Ведь тогда получается что хватает только одной проверки между суммой первой строки и суммой второй. Типа: if (первая сумма < второй) then вторая; else первая;

P.P.P.S жду ответов, уважаемые программисты!
Если я вам помог - нажмите на весы пот аватаркой!
k0tone вне форума Ответить с цитированием
Старый 24.12.2010, 15:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что значит первую по порядку
А вдруг будет две строки с одинаковой суммой по элементам? Тогда нужно взять первую начиная с начала строку.
Допустим

1 2 3 - 6
2 3 1 - тоже 6
Тебе нужно взять строку 1 2 3

Ферштейн?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 15:33   #3
k0tone
Пользователь
 
Аватар для k0tone
 
Регистрация: 09.11.2010
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А вдруг будет две строки с одинаковой суммой по элементам? Тогда нужно взять первую начиная с начала строку.
Допустим

1 2 3 - 6
2 3 1 - тоже 6
Тебе нужно взять строку 1 2 3
получается нужно приметить цикл:

Код:
while sum[i]<sum[i+1] do
begin
i:=i+1;
end;
for j:=1 to n do x[j]:=a[i,j];
но если суммы по строкам будут:
3, 4, 5
то в результат пойдет третья строка. А по сути должна быть вторая. Верно?
Тогда получается:

Код:
if sum[i]<=sum[i+1] then
begin
for j:=1 to n do
x[j]:=a[i,j];
end
else for j:=1 to n do x[j]:=x[i+1,j];
Какой из предложенных кодов будет верен? Или укажите на мои ошибки.
Если я вам помог - нажмите на весы пот аватаркой!
k0tone вне форума Ответить с цитированием
Старый 24.12.2010, 16:09   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А по сути должна быть вторая. Верно?
Почему? Ты же сказал
Цитата:
строку с наибольшей суммой ее элементов
Значит ту в которой 5
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2010, 16:29   #5
k0tone
Пользователь
 
Аватар для k0tone
 
Регистрация: 09.11.2010
Сообщений: 99
По умолчанию

Спасибо за помощь!
Если я вам помог - нажмите на весы пот аватаркой!
k0tone вне форума Ответить с цитированием
Старый 24.12.2010, 16:34   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пожалуйста, только я собственно ничем и не помог
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с массивами (Pascal) kead Помощь студентам 1 15.11.2009 17:03
Работа с массивами. Pascal. shatoo Помощь студентам 3 27.09.2009 23:57
Работа с массивами (pascal) Стасссс Помощь студентам 7 19.03.2009 16:16
Работа с массивами (pascal) Bykvaeshka Помощь студентам 3 17.03.2009 18:24
Работа с массивами на pascal Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 2 18.12.2008 16:30