Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > программа для вычисления вектора


Автор: DELFA 19.3.2006, 18:15
Я написала программку, но она не правильно работает, хотя вроде все правильно..... smile
Заданы Матрица А, порядка n и два вектора p={p1,p2,....pn} и q={q1,q2,...qn}, компоненты которых целые числа, заключенные между 1 и n.Составить программу для вычисления вектора В={b1,b2,...,bm}, компонентами которого являются следующие элементы матрицы А:
a[i,j],где i=1,2,...,n; j=p[i],p[i+1],....,q[i],q[i+1]....
Расположить полученные компоненты в порядке возрастания

моя програмка:
Код

program mas;

uses crt;

const x=5;

var
  A:array [1..x,1..x] of real;
  p,q:array [1..x] of integer;
  B:array[1..x] of real;
  i,n,j,k:integer;
  c:real;

begin
  clrscr;
  writeln('vvedite razmer matrici');
  readln(n);
  writeln('vvedite 4icla matrici');
  for i:=1 to n do
  begin
    for j:=1 to n do
      readln (A[i,j]);
  end;
  writeln ('matrica A');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write (A[i,j]:8:3);
    writeln;
  end;
  writeln('vvedite 4icla vektora p,zakl mejdy 1 i ',n);
  for i:=1 to n do
  begin
    readln(p[i]);
    if (p[i]>n) or (p[i]<1) then i:=i-1;
  end;
  write ('p:');
  for i:=1 to n do
    write (p[i],', ');
  writeln;
  readkey;
  writeln('vvedite 4icla vektora q,zakl mejdy 1 i ',n);
  for i:=1 to n do
  begin
    readln(q[i]);
    if (q[i]>n) or (q[i]<1) then i:=i-1;
  end;
  write ('q:');
  for i:=1 to n do
  write (q[i],', ');
  writeln;
  for k:=1 to high(B) do
    for i:=1 to n do
    begin
      for j:= p[i] to 
        B[k]:=A[i,j]
    end;
  readkey;
end.

smile

Автор: СЭНСЭЙ 20.3.2006, 14:14
погоди ка, ты задаешь в программе изначально размер матрици - 5.
Ну допустим ты потом вводишь 3 и просто из 25 возможных ячеек заполняешь только 9.
Это ладно.Но зачем тогда High(B)?
Я еще подумаю конечно над прогой... но что то меня это High(B) настораживает.

Автор: Romikgy 20.3.2006, 15:20
неправильный код!
1.
Цитата(DELFA @ 19.3.2006, 17:15 Найти цитируемый пост)
writeln('vvedite razmer matrici');
  readln(n);


Цитата(DELFA @ 19.3.2006, 17:15 Найти цитируемый пост)
const x=5;
var
  A:array [1..x,1..x] of real;

Это все ограничивает н числом 5 , а у тя вводи хоть 100, код ни как не прориагирует (ну только ошибкой smile)

2.
Цитата(DELFA @ 19.3.2006, 17:15 Найти цитируемый пост)
a[i,j],где i=1,2,...,n; j=p[i],p[i+1],....,q[i],q[i+1]....


Цитата(DELFA @ 19.3.2006, 17:15 Найти цитируемый пост)
p={p1,p2,....pn} и q={q1,q2,...qn}

i у тя меняется от 1 до n
а j у тя будет менятся от 1 до 2*n
обратно ошибка

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)