billchester
Новые
- Регистрация
- 11 Апр 2011
- Сообщения
- 14
- Реакции
- 0
- Баллы
- 0
Нужна помощь с отладкой
посмотрите прогу, не понимаю че ей не хватает
Соседями элемента Aij в матрице назовем элементы Akl, где i - 1 ≤ k ≤ i + 1, j - 1 ≤l≤j+1, (k, l) ≠ (i,j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 х 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
program f1;
uses crt;
const c=10;
type matrica=array[1..c,1..c] of real;
var a,b:matrica;
n:integer;
procedure vvod(n1:integer; a1:matrica);
var i,j:integer;
begin
randomize;
for i:=1 to n1 do
for j:=1 to n1 do
a1[i,j]:=200*random-100;
end;
procedure vuvod(n1:integer; a1:matrica);
var i,j:integer;
begin
for i:=1 to n1 do
begin
for j:=1 to n1 do
write(a1[i,j]:7:2);
writeln;
end;
end;
procedure postroit(n1:integer; a1:matrica; var b1:matrica);
var i,j,k,l,kol_vo:integer;
begin
for i:=1 to n1 do
for j:=1 to n1 do
begin
b1[i,j]:=0;
kol_vo:=0;
for k:=i-1 to i+1 do
if(k>0) and (k<=n1) then
for l:=j-1 to j+1 do if (l>0) and (l<=n1) then
if(k<>i) or(l<>j) then begin
b1[i,j]:=b1[i,j]+a1[k,l];
kol_vo:=kol_vo+1;
end;
b1[i,j]:=b1[i,j]/kol_vo;
end;
end;
function summa(n1:integer; a1:matrica):real;
var i,j:integer;
s:real;
begin
s:=0;
for i:=1 to n1 do
for j:=1 to i-1 do
s:=s+abs(a1[i,j]);
summa:=s;
end;
begin
clrscr;
writeln('VVedite razmer matrici');
repeat
write ('n= ');
readln
;
until(n>1) and (n<=c);
clrscr;
writeln('Dana Matrica A:');
vvod(n,a);
vuvod(n,a);
writeln('Polu4eHa matrica B:');
postroit(n,a,b);
vuvod(n,b);
writeln('Otvet: summa= ', summa(n,b):7:2);
readln;
end.
и проверьте эту пожалуйста
Задача 2.
1. Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке
2. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента
Код программы
program dz6_2;
uses crt;
const
max=10;
type
mas=array[1..max,1..max] of integer;
var
nmax,mmax:integer;
m:mas;
i,j:integer;
procedure otr(var m:mas);
var
found:boolean;
d,t:integer;
nom:integer;
begin
d:=0;
t:=0;
nom:=0;
for j:=1 to mmax do
begin
d:=d+t;
found:=false;
for i:=1 to nmax do
if m[i,j]<0 then
begin
found:=true;
end
else nom:=j;
if (found=false) and (d=0) then
begin
t:=1;
writeln('Nomer pervogo stolbca bez otricatelnih chisel = ',nom);
end;
end;
if (t=0) then writeln('Vo vsex stolbax est otricatelnie chisla');
end;
begin
clrscr;
repeat
writeln('BBedite razmer matrix ');
write('n=');
readln(nmax);
write('m=');
readln(mmax);
if (nmax<=0) or (nmax>max) or (mmax<=0) or (mmax>max) then
writeln('Nevernii razmer matrix');
until (nmax>0) and (nmax<=max) and (mmax>0) and (mmax<=max);
for i:=1 to nmax do
for j:=1 to nmax do
begin
write ('[',i,';',j,']=');
readln(m[i,j]);
end;
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j],' ');
writeln;
end;
otr(m);
readln;
end.
посмотрите прогу, не понимаю че ей не хватает
Соседями элемента Aij в матрице назовем элементы Akl, где i - 1 ≤ k ≤ i + 1, j - 1 ≤l≤j+1, (k, l) ≠ (i,j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 10 х 10.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
program f1;
uses crt;
const c=10;
type matrica=array[1..c,1..c] of real;
var a,b:matrica;
n:integer;
procedure vvod(n1:integer; a1:matrica);
var i,j:integer;
begin
randomize;
for i:=1 to n1 do
for j:=1 to n1 do
a1[i,j]:=200*random-100;
end;
procedure vuvod(n1:integer; a1:matrica);
var i,j:integer;
begin
for i:=1 to n1 do
begin
for j:=1 to n1 do
write(a1[i,j]:7:2);
writeln;
end;
end;
procedure postroit(n1:integer; a1:matrica; var b1:matrica);
var i,j,k,l,kol_vo:integer;
begin
for i:=1 to n1 do
for j:=1 to n1 do
begin
b1[i,j]:=0;
kol_vo:=0;
for k:=i-1 to i+1 do
if(k>0) and (k<=n1) then
for l:=j-1 to j+1 do if (l>0) and (l<=n1) then
if(k<>i) or(l<>j) then begin
b1[i,j]:=b1[i,j]+a1[k,l];
kol_vo:=kol_vo+1;
end;
b1[i,j]:=b1[i,j]/kol_vo;
end;
end;
function summa(n1:integer; a1:matrica):real;
var i,j:integer;
s:real;
begin
s:=0;
for i:=1 to n1 do
for j:=1 to i-1 do
s:=s+abs(a1[i,j]);
summa:=s;
end;
begin
clrscr;
writeln('VVedite razmer matrici');
repeat
write ('n= ');
readln
until(n>1) and (n<=c);
clrscr;
writeln('Dana Matrica A:');
vvod(n,a);
vuvod(n,a);
writeln('Polu4eHa matrica B:');
postroit(n,a,b);
vuvod(n,b);
writeln('Otvet: summa= ', summa(n,b):7:2);
readln;
end.
и проверьте эту пожалуйста
Задача 2.
1. Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке
2. Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента
Код программы
program dz6_2;
uses crt;
const
max=10;
type
mas=array[1..max,1..max] of integer;
var
nmax,mmax:integer;
m:mas;
i,j:integer;
procedure otr(var m:mas);
var
found:boolean;
d,t:integer;
nom:integer;
begin
d:=0;
t:=0;
nom:=0;
for j:=1 to mmax do
begin
d:=d+t;
found:=false;
for i:=1 to nmax do
if m[i,j]<0 then
begin
found:=true;
end
else nom:=j;
if (found=false) and (d=0) then
begin
t:=1;
writeln('Nomer pervogo stolbca bez otricatelnih chisel = ',nom);
end;
end;
if (t=0) then writeln('Vo vsex stolbax est otricatelnie chisla');
end;
begin
clrscr;
repeat
writeln('BBedite razmer matrix ');
write('n=');
readln(nmax);
write('m=');
readln(mmax);
if (nmax<=0) or (nmax>max) or (mmax<=0) or (mmax>max) then
writeln('Nevernii razmer matrix');
until (nmax>0) and (nmax<=max) and (mmax>0) and (mmax<=max);
for i:=1 to nmax do
for j:=1 to nmax do
begin
write ('[',i,';',j,']=');
readln(m[i,j]);
end;
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j],' ');
writeln;
end;
otr(m);
readln;
end.