Заполняется с клавиатуры верхняя часть. Потом с помощью операторов присваивания, надо сделать матрицу симметричной... Помогите, плиз, написать саму часть где матрица делается симметричной...
volvo
25.12.2008 4:01
Цитата
надо сделать матрицу симметричной...
Относительно чего? Какая верхняя часть заполняется?
Eskel
25.12.2008 4:05
"Заполнить с клавиатуры симметричную квадратную действительную матрицу N-го порядка (вводить только верхнюю треугольную матрицу, нижний треугольник заполнить программно, при помощи операторов присваивания)." - Задание выглядит так... Я тож думаю... Про какой треугольник они говорят...
for i := 1to n dofor j := i + 1to n do
a[j, i] := a[i, j];
Eskel
25.12.2008 4:25
а главная диагональ как заполнится?
volvo
25.12.2008 4:28
А главную ты должен заполнять, потому что верхнетреугольная матрица включает ее.
Eskel
25.12.2008 4:59
Спасибо. Вот еще, помогите ошибку из проги убрать. Препод сказал, что я неправильно открытый массив использовал:
Program art2;
uses crt;
Const m=15;
Var
a,b:array[1..m] of real;
c:array[1..m+5] of real;
x:real; k1,k2,k3:integer;
procedure zap(k:integer; var f:arrayof real);
Var
i:integer;
beginfor i:=1to k do
f[i]:=200*random-100end;
procedure vivod(k:integer; var f:arrayof real);
Var
i:integer;
beginfor i:=1to k do
write(f[i]
1,' ') end;
procedure nax(k:integer; f:arrayof real; var r:integer);
Var
i:integer;
Begin
r:=0;
for i:=1to k doif f[i]<0then r:=r+1end;
procedure umnog(k:integer; r:real; var f:arrayof real);
var
i:integer;
Beginfor i:=1to k do
f[i]:=f[i]*r end;
Begin clrscr;
Randomize;
write('vvedite x '); readln(x);
zap(m,a); writeln('massiv A'); vivod(m,a); writeln;
zap(m,b); writeln('massiv B'); vivod(m,b); writeln;
zap(m+5,c); writeln('massiv C'); vivod(m+5,c); writeln;
nax(m,a,k1); nax(m,b,k2); nax(m+5,c,k3);
writeln('kol-vo otriz v masA= ',k1);
writeln('kol-vo otriz v masB= ',k2);
writeln('kol-vo otriz v masC= ',k3);
if (k1<k2) and (k1<k3) thenbegin umnog(m,x,a); vivod(m,a) endelseif (k2<k1) and (k2<k3) thenbegin umnog(m,sqr(x),b); vivod(m,b) endelseif (k3<k1) and (k3<k2) thenbegin umnog(m+5,x/10,c); vivod(m+5,c) endelse
writeln('kol-va ravni');
readln
End.
Задание: Дано целое число М, вещественное число Х, вещественные кортежи А,В[1..М], C[1..M+5]. Кортеж, имеющий наименьшее кол-во отриц элементов(в предположении, что такой кортеж один), домножить на R, где R=X для кортежа А, R=sqr(x) для кортежа В и R=X/10 для кортежа С
volvo
25.12.2008 5:18
Цитата(Eskel @ 24.12.2008 23:59)
Препод сказал, что я неправильно открытый массив использовал:
Правильно сказал: открытые массивы всегда индексируются с 0, а не с 1-цы, так что либо меняй границы циклов (что предпочтительно), либо f[ i ] меняй на f[i - 1] там, где работаешь с открытым массивом.
Eskel
25.12.2008 5:26
я так понимаю i:=0 to k-1
volvo
25.12.2008 5:55
Я б на твоем месте вообще вот так сделал:
Program art2;
uses crt;
procedure zap(var f: arrayof real);
var
i:integer;
beginfor i := low(f) to high(f) do
f[i] := 200 * random - 100end;
procedure vivod(const f: arrayof real);
var
i: integer;
beginfor i := low(f) to high(f) do
write(f[i] :3 :1, '':1);
writeln;
end;
procedure nax(const f: arrayof real; var r:integer);
var
i: integer;
begin
r := 0;
for i := low(f) to high(f) doif f[i] < 0then inc(r)
end;
procedure umnog(r: real; var f:arrayof real);
var
i: integer;
beginfor i := low(f) to high(f) do
f[i] := f[i] * r
end;
const m=15;
var
a, b: array[1..m] of real;
c: array[1..m+5] of real;
x: real; k1,k2,k3: integer;
begin
clrscr;
randomize;
write('vvedite x '); readln(x);
zap(a); writeln('massiv A'); vivod(a);
zap(b); writeln('massiv B'); vivod(b);
zap(c); writeln('massiv C'); vivod(c);
nax(a, k1); nax(b, k2); nax(c, k3);
writeln('kol-vo otriz v masA= ',k1);
writeln('kol-vo otriz v masB= ',k2);
writeln('kol-vo otriz v masC= ',k3);
if (k1<k2) and (k1<k3) thenbegin umnog(x,a); vivod(a) endelseif (k2<k1) and (k2<k3) thenbegin umnog(sqr(x),b); vivod(b) endelseif (k3<k1) and (k3<k2) thenbegin umnog(x/10,c); vivod(c) endelse writeln('kol-va ravni');
readln
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.