Модуль, который удаляет строки матрицы, содержащие не менее 3 четных чисел (найдите ошибку в коде) - Free Pascal

Узнай цену своей работы

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

С клавиатуры вводятся размеры двумерного массива и его элементы. Составить главную программу и подпрограмму. В подпрограмме удалить строки матрицы, содержащие не менее 3 четных чисел.Нужно составить модуль, в который включить эту подпрограмму. Реализовать главную программу, подключив модуль. Главная программа
uses crt, modudal;
var a,b:ta;
i,j,k,m:byte;
 begin clrscr;
writeln('k, m:');
  readln(k,m);
writeln('vvedite massiv:');
  for i:=1 to k do
    for j:=1 to m do
   read(a[i,j]);
   proc(b);
  readkey
end.
молуль
unit modudal;
interface
type ta=array[1..10,1..10] of integer;
procedure proc(b:ta);
implementation
procedure proc;
var a,s,n:integer;
var i,j,k,m:byte;
 begin
  for a:=1 to k do
begin
n:=0;
   for s:=1 to m do
if (b[a,s] mod 2)=0 then
inc(n);
   if n>=3 then
 continue;
   for s:=1 to m do
 write(b[a,s]:5);
  end;
 end;
end.
Всем заранее спасибо!

Решение задачи: «Модуль, который удаляет строки матрицы, содержащие не менее 3 четных чисел (найдите ошибку в коде)»

textual
Листинг программы
unit modudal;
interface
const nmax=20;
type ta=array[1..nmax,1..nmax] of integer;
procedure proc(var b:ta;k,m:integer);
implementation
procedure proc(var b:ta;k,m:integer);
var a,s,n,k1,i,j:byte;
begin
a:=1;
k1:=k;
while a<=k do
 begin
  n:=0;
  for s:=1 to m do
  if b[a,s] mod 2=0 then
  inc(n);
  if n>=3 then
   begin
    if a=k then dec(k)
    else
     begin
      for i:=a to k-1 do
      for j:=1 to m do
      b[i,j]:=b[i+1,j];
      dec(k);
     end;
   end
  else inc(a);
 end;
if k=0 then write('Все строки удалены')
else if k=k1 then write('Нет строк для удаления')
else
 begin
  writeln('Удалены строки где не менее 3 четных элементов');
  for i:=1 to k do
   begin
    for j:=1 to m do
    write(b[i,j]:4);
    writeln;
   end;
 end;
end;
end.

Объяснение кода листинга программы

  1. Ввод заголовка модуля modudal
  2. Объявление константы nmax равной 20
  3. Объявление типа ta как массива 2-х измерений (1..nmax, 1..nmax) целочисленного типа
  4. Объявление процедуры proc с тремя параметрами: var b:ta, k,m:integer
  5. Определение первой локальной переменной a типа byte и инициализация ее значением 1
  6. Инициализация переменной k1 значением k
  7. Ввод цикла while от a до k
  8. Внутри цикла: инициализация переменной n равной 0
  9. Ввод вложенного цикла for от s до m
  10. Внутри вложенного цикла: проверка, является ли элемент b[a,s] четным (остаток от деления на 2 равен 0)
  11. Если условие выполняется, то увеличивается значение переменной n
  12. Если значение переменной n становится равным 3, то выполняется удаление строк
  13. Если значение переменной a равно k, то значение k уменьшается на единицу
  14. Если значение переменной a не равно k, то выполняется перенос элементов из следующей строки в текущую
  15. Если значение переменной k равно нулю, то выводится сообщение Все строки удалены
  16. Если значение переменной k равно k1, то выводится сообщение Нет строк для удаления
  17. Если условие не выполняется, то выводится сообщение Удалены строки где не менее 3 четных элементов
  18. Ввод цикла for от i до k
  19. Внутри цикла: ввод цикла for от j до m
  20. Внутри вложенного цикла: вывод значения элемента b[i,j] в шестнадцатеричной системе счисления
  21. Вывод символа новой строки \n

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы