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

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

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

Здравствуйте, такая задача. Есть матрица (n на 2n) . Найти номер первой строки все элементы которой кратны 5. Использовать только цикл while. Поиск решения сделать с процедурой. Входные данные и результат выписать в текстовый файл. Я написал саму программу. Однако появилась такая проблема. После считывания данных программа не закрывается (остается висеть черным окном). После пошаговой проверки оказалось, что проблема в процедуре. Наверное, нет выхода из цикла. Помогите, пожалуйста найти ошибку.
Листинг программы
  1. Type Matrix = array[1..5, 1..10] of integer;
  2. Procedure Check(var n : integer; X : matrix; var Result : integer);
  3. var i, j, k, n2 : integer;
  4. U, Y : boolean;
  5. begin
  6. i := 1; j := 1; Result := 0; U := true; n2 := 2 * n;
  7. while U = true do
  8. begin
  9. Y := true;
  10. if i < n + 1 then
  11. begin
  12. k := 0;
  13. while Y = true do
  14. begin
  15. if j < (n2 + 1) then
  16. begin
  17. if (x[i, j] mod(5) = 0) then
  18. k := k + 1;
  19. j := j + 1;
  20. end;
  21. if j = n2 then Y := false;
  22. end;
  23. if (k = n2) then
  24. begin
  25. Result := i;
  26. U := false;
  27. end;
  28. Y := false;
  29. i := i + 1;
  30. end;
  31. if i = 6 then U := false;
  32. end;
  33. end;

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

textual
Листинг программы
  1. Type Matrix = array[1..5, 1..10] of integer;
  2. Procedure Check(n:integer;X: matrix;var Result:integer);
  3. var n2,i,j,k:integer;
  4. begin
  5. Result:=0;
  6. n2:=2*n;
  7. i:=1;
  8. while(i<=n)and (Result=0)  do
  9.  begin
  10.   j:=1;
  11.   k:=0;
  12.   while (j<=n2)and(k=0) do
  13.   if X[i,j] mod 5<>0 then k:=1
  14.   else j:=j+1;
  15.   if k=0 then Result:=i
  16.   else i:=i+1;
  17.  end;
  18. writeln('Номер первой строки, элементы которой кратны 5=',Result)
  19. end;
  20. var a:matrix;
  21.     n,nstr,i,j:integer;
  22. begin
  23. while not(n in [1..5]) do
  24.  begin
  25.   write('Количество строк от 1 до 5 n=');
  26.   readln(n);
  27.  end;
  28. writeln('Введите элементы матрицы, в том числе строки с числами, кратными 5');
  29. i:=1;
  30. while i<=n do
  31.  begin
  32.   j:=1;
  33.   while j<=2*n do
  34.    begin
  35.     write('a[',i,',',j,']=');
  36.     readln(a[i,j]);
  37.     j:=j+1;
  38.    end;
  39.   i:=i+1;
  40.  end;
  41. writeln('Матрица');
  42. i:=1;
  43. while i<=n do
  44.  begin
  45.   j:=1;
  46.   while j<=2*n do
  47.    begin
  48.     write(a[i,j]:4);
  49.     j:=j+1;
  50.    end;
  51.   writeln;
  52.   i:=i+1;
  53.  end;
  54. Check(n,a,nstr);
  55.  
  56. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы