Дана квадратная матрица - Turbo Pascal (33566)

Формулировка задачи:

Дана квадратная матрица, симметричная относительно главной диагонали, задана верхним треугольником в виде одномерного массива. Восстановить исходную матрицу и напечатать ее в общепринятом виде. Нужно в этой матрице сделать ввод массива от пользователя , а не рэндомный пробовал не получается помогите , буду благодарен
program pr4;
uses crt;
var
  a: array[1..20,1..20] of integer;
  b: array[1..20,1..20] of integer;
  c:array[1..20] of integer;
  n1,m1,x1:string;
  n,i,j,k,code: integer;
begin
clrscr;
   repeat
    write('Vvedite n  ');
    readln(n1);
    val (n1,n,code);
    if (code<>0) then writeln ('Povtorite vvod') else
    if (n<=0) then writeln('Povtorite vvod')
    until (code=0) and (n>0);
  writeln('Vvedite odnomernii massiv: ');
  for i:=1 to n do
  readln(c[i]);
  writeln;
  writeln('Odnomernii massive');
  write(c[i]:4,'  ');
  writeln;
  writeln('Verhniy treugolnik matrici');
  for i:=1 to n do
  begin
    for j:=1 to n do
      if i>j then write('    ') else
      begin
        inc(k);
        b[i,j]:=a[i,j];
        b[j,i]:=b[i,j];
        write(b[i,j]:4);
      end;
      writeln;
  end;
  writeln('Ishodnaya matrica:');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write(b[i,j]:4);
    writeln;
  end;
  readln;
end.


textual

Код к задаче: «Дана квадратная матрица - Turbo Pascal (33566)»

const 
  maxsize = 10;
  
var
  arr : array[1 .. maxsize] of integer;
  
var 
  mx : array[1 .. maxsize, 1 .. maxsize] of integer;
  mxSize : integer;
  i, j, k, size : integer;
begin
  repeat
    write('n = '); readln(size);
  until (size > 0) and (size <= maxsize);
  
  { сначала находим размер матрицы: }
  mxSize := (Trunc(Sqrt(Succ(8*size))) - 1) div 2;
  writeln('Размер матрицы: ', mxSize, '*', mxSize);
 
  writeln('Введите массив:');
  for i := 1 to size do
  begin
    write('A[', i:2, '] = '); readln(arr[i]);
  end;
  
 
  k := 1; { Ну, а потом - заполняем ее }
  for i := 1 to mxSize do 
  begin
    mx[i, i] := arr[k]; { элемент главной диагонали }
    inc(k);
    for j := i + 1 to mxSize do
    begin
      mx[i, j] := arr[k]; { над главной }
      mx[j, i] := arr[k]; { под главной }
      inc(k);
    end;
  end;
  
  for i := 1 to mxSize do
  begin
    for j := 1 to mxSize do
      write(mx[i, j]:5);
    writeln;
  end;
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

12   голосов, оценка 4.333 из 5

Источник
Похожие ответы