Страница 1 из 2

Двумерный массив в паскале

Добавлено: 23 апр 2009, 11:58
Helena
Здравствуйте.
Подскажите, пожалуйста, можно ли в паскале при объявлении инициализировать двумерный массив 3x3.
Например, как одномерный:
A: array[1..5] of integer=(1,2,3,4,5)
Заранее спасибо.

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 13:36
Unicuum
B: array [1..2,1..3]of integer = ((1,2,3),(4,5,6));
| 1 2 3 |
| 4 5 6 |

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 14:19
Helena
Компилятор говорит ошибка. Хочет ; после integer

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 21:25
Naeel Maqsudov
Так можно объявлять переменные в разделе Const, а Вы наверное пытаетесть в Var.

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 21:59
Helena
type mas=array[1..3,1..3] of integer;
const a: mas=((1,2,3),(1,2,3),(1,2,3));
И так не получается.

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 22:05
Naeel Maqsudov
Хм... У меня это компилируется.
Какая версия Pascal?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Я проверил в Borland Pascal 7 и в Pascal ABC

Re: Двумерный массив в паскале

Добавлено: 23 апр 2009, 23:25
Helena
А у меня ругается на type. Версия 7.1, но я ее качала с нета, она очень мало "весит", может какая-нибудь "облегченная версия".

Re: Двумерный массив в паскале

Добавлено: 24 апр 2009, 07:50
Naeel Maqsudov
Настолько облегченных верси не бывает! :)
Ищите опечатку.
Сделайте в конце концов просто "копи-паст" вашего исходного кода сюда, если ничего не получится. Посмотрим.

Re: Двумерный массив в паскале

Добавлено: 24 апр 2009, 14:06
Helena
Вот. Может, если будет желание, Вы и мат часть посмотрите. Строго не судите, паскаль знаю плохо, да и алгоритмы кривоваты)))
Программа считает коэффициенты характеристического уравнения, находит локализационные промежутки и корни с точностью Е.
Если вводить матрицу вручную, то все работает.

Код: Выделить всё

program matrix;
uses Crt;

var
type mas=array[1..3,1..3]of integer;

const A: mas=((-1,-3,0),
              (2,4,1),
              (-1,3,5));   }
i,j,x1,k,x2,x3,x4: integer;
e,l,b1,b2,c,x: real;
A2: array[1..11] of integer;
A1: array[1..301] of integer;
A3: array[1..301] of integer;
begin
clrscr;
writeln;
Writeln('Vvedite znachenia matricy :');
writeln;
for i:=1 to 3 do
begin for j:=1 to 3 do
read (A[i,j]);
write (' ');
end;
writeln;

x1:=0;
x2:=0;
x3:=0;
x4:=0;
writeln('Matrica viglydit sledyushim obrazom :');
for i:=1 to 3 do
begin
 for j:=1 to 3  do
 begin

  write (' ', A[i,j]);
  end;
     writeln;
   end;

   x1:=-1;
   x2:=A[1,1]+A[3,3]+A[2,2];
   x3:=-A[1,1]*A[3,3]-A[1,1]*a[2,2]+A[3,2]*A[2,3]+A[1,2]*A[2,1]+A[1,3]*A[3,1]-A[2,2]*A[3,3];
   x4:=A[1,1]*(A[2,2]*A[3,3]-A[3,2]*A[2,3])-A[1,2]*(A[2,1]*A[3,3]-A[3,1]*A[2,3])+A[1,3]*(A[2,1]*A[3,2] - A[3,1]*A[2,2]);

  writeln('Koefficienty harakteristicheskogo yravneniy : x1=',x1,' x2=',x2,' x3=',x3,' x4=',x4);


  {Nahozhdenie promezhytkov}
  j:=1;
  for i:=-20 to 20 do
  begin
  A1[j]:=x1*i*i*i+x2*i*i+x3*i+x4;
  A3[j]:=i;

  j:=j+1;
 end;

  k:=0;
  i:=1;
  for j:=1 to 41 do
  begin
   if ((A1[j]>0)and(A1[j+1]<0))or((A1[j]<0)and(A1[j+1]>0))
  then
  begin
   A2[i]:=A3[j];
   A2[i+1]:=A3[j+1];
   i:=i+1;
   k:=k+2;
  end;
  end;
  writeln;
   writeln;

  writeln('Localizacionnie promezhytki :');

  for i:=1 to k do
  begin
  write ('[',A2[i],';',A2[i+1],'], ');
  i:=i+1;
  end;


  {Metod polovinnogo deleniy}
  writeln;
  writeln ('Vvedite tochnost, s kotoroi neobhodimo vichislit :');
  readln(e);

 for  i:=1 to k do
 begin
 b1:=A2[i];
 b2:=A2[i+1];

 c:=(b1+b2)/2;
 while abs(b2-b1)>e do
 begin
 if (x1*b1*b1*b1+x2*b1*b1+x3*b1+x4)*(x1*c*c*c+x2*c*c+x3*c+x4)=0 then
 b2:=c else
 b1:=c;
 c:=(b1+b2)/2;
 end;
 x:=(b1+b2)/2;
 writeln('x=',x,' ');
 i:=i+1;
 end;
  readln (i);
  end. 

Re: Двумерный массив в паскале

Добавлено: 24 апр 2009, 14:15
Unicuum
он случайно не ругается на скобочку в конце?

Код: Выделить всё

const A: mas=((-1,-3,0),
              (2,4,1),
              (-1,3,5));   }