Найти номер первой строки, все элементы которой кратны 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.
Объяснение кода листинга программы
- Создается тип данных
Matrix
, который представляет собой массив целых чисел размером 5х10. - Создается процедура
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
. - Создается переменная
a
типаmatrix
и инициализируется значениями из введенной пользователем матрицы. - Выполняется цикл
while
, покаn
не будет равно 5. В каждой итерации цикла пользователю предлагается ввести количество строк от 1 до 5. - В каждой итерации цикла
while
пользователь вводит элементы матрицы, включая строки с числами, кратными 5. - Выводится сообщение с номером первой строки, все элементы которой кратны 5.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д