Найти номер первой строки, все элементы которой кратны 5 - Turbo Pascal

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

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

Здравствуйте, такая задача. Есть матрица (n на 2n) . Найти номер первой строки все элементы которой кратны 5. Использовать только цикл while. Поиск решения сделать с процедурой. Входные данные и результат выписать в текстовый файл. Я написал саму программу. Однако появилась такая проблема. После считывания данных программа не закрывается (остается висеть черным окном). После пошаговой проверки оказалось, что проблема в процедуре. Наверное, нет выхода из цикла. Помогите, пожалуйста найти ошибку.

Решение задачи: «Найти номер первой строки, все элементы которой кратны 5»

textual
Листинг программы
Type Matrix = array[1..5, 1..10] of integer;
Procedure Check(n:integer;X: matrix;var Result:integer);
var n2,i,j,k:integer;
begin
Result:=0;
n2:=2*n;
i:=1;
while(i<=n)and (Result=0)  do
 begin
  j:=1;
  k:=0;
  while (j<=n2)and(k=0) do
  if X[i,j] mod 5<>0 then k:=1
  else j:=j+1;
  if k=0 then Result:=i
  else i:=i+1;
 end;
writeln('Номер первой строки, элементы которой кратны 5=',Result)
end;
var a:matrix;
    n,nstr,i,j:integer;
begin
while not(n in [1..5]) do
 begin
  write('Количество строк от 1 до 5 n=');
  readln(n);
 end;
writeln('Введите элементы матрицы, в том числе строки с числами, кратными 5');
i:=1;
while i<=n do
 begin
  j:=1;
  while j<=2*n do
   begin
    write('a[',i,',',j,']=');
    readln(a[i,j]);
    j:=j+1;
   end;
  i:=i+1;
 end;
writeln('Матрица');
i:=1;
while i<=n do
 begin
  j:=1;
  while j<=2*n do
   begin
    write(a[i,j]:4);
    j:=j+1;
   end;
  writeln;
  i:=i+1;
 end;
Check(n,a,nstr);
 
end.

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

  1. Создается тип данных Matrix, который представляет собой массив целых чисел размером 5х10.
  2. Создается процедура Check, которая принимает в качестве параметров n - количество строк, и X - матрицу. Она инициализирует переменную Result значением 0. Затем она вычисляет n2 как 2 умноженное на n. Далее, внутри цикла while, проверяется условие i<=n и Result=0. Если это условие выполняется, то переменные i, j и k инициализируются значениями 1, 1 и 0 соответственно. Затем, внутри цикла while, проверяется условие j<=n2 и k=0. Если это условие выполняется, то k устанавливается равным 1. Если условие k=0 выполняется, то Result устанавливается равным i. Если условие k=0 не выполняется, то i увеличивается на 1. После окончания внутреннего цикла while, переменная i устанавливается равной i+1.
  3. Создается переменная a типа matrix и инициализируется значениями из введенной пользователем матрицы.
  4. Выполняется цикл while, пока n не будет равно 5. В каждой итерации цикла пользователю предлагается ввести количество строк от 1 до 5.
  5. В каждой итерации цикла while пользователь вводит элементы матрицы, включая строки с числами, кратными 5.
  6. Выводится сообщение с номером первой строки, все элементы которой кратны 5.

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


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

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

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