Работа с массивами! - Pascal
Формулировка задачи:
Здравствуйте!
Помогите найти ошибку в программе.
Вот задача:
Дана прямоугольная матрица А, состоящая из нулей и единиц. Посчитать в ней “веса” строк, т.е. отношение числа единиц в строке к общему числу элементов строки. Строки с “весом”, меньшим 0,5 , вычеркнуть, осуществив сжатие матрицы. Далее тоже проделать для столбцов уже сжатой матрицы.
Написал код, но в некоторых случаях выводит результат неправильно.
Код программы:
Решение задачи: «Работа с массивами!»
textual
Листинг программы
program qwerty; uses crt; const NN = 20; type AA = array[1..NN,1..NN] of byte; procedure delrow(K,M: byte; var Q: byte; var A: AA); var i,j: byte; begin if k=q then q:=q-1 else begin for i:=K to Q-1 do for j:=1 to M do A[i,j]:=A[i+1,j]; q:=q-1; end; end; procedure delcol(K,N: byte; var Q: byte; var A: AA); var i,j: byte; begin if k=q then q:=q-1 else begin for j:=K to Q-1 do for i:=1 to N do A[i,j]:=A[i,j+1]; q:=q-1; end; end; procedure readmatrix(N,M: integer; var A: AA); var i,j: byte; begin for i:=1 to N do for j:=1 to M do A[i,j]:=random(2); end; procedure writematrix(N,M: integer; var A: AA); var i,j: byte; begin for i:=1 to N do begin for j:=1 to M do write(A[i,j]:3); writeln; end; writeln; end; var A: AA; N,M,K,c,i,j: byte; v:real; begin clrscr; write('Vvedite kol-vo strok N='); readln(N); write('Vvedite kol-vo stolbcov M='); readln(M); readmatrix(N,M,A); writeln('Matrix A:'); writematrix(N,M,A); i:=1; while i<=n do begin c:=0; for j:=1 to M do if A[i,j]=1 then c:=c+1; v:=c/m; writeln('Ves stroki ',i,'=',v:0:1); if v<0.5 then delrow(i,M,N,A) else i:=i+1; end; if n=0 then begin write('Vse stroki udaleny, programma zavershena.'); readln; exit; end; writeln; writeln('Udalenie strok:'); writematrix(N,M,A); write('Press Enter...'); readln; j:=1; while j<=m do begin c:=0; for i:=1 to N do if A[i,j]=1 then c:=c+1; v:=c/n; writeln('Ves stolbca ',j,'=',v:0:1); if v<0.5 then delcol(j,N,M,A) else j:=j+1; end; if m=0 then begin write('Vse stolbcy udaleny, programma zavershena.'); readln; exit; end; writeln('Udalenie stolbcov:'); writematrix(N,M,A); write('Press Enter...'); readln end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д