Указать числа массива, у которых остаток от деления на М - Pascal
Формулировка задачи:
Даны натуральные числа a1,a2,....,an . Указать те из них, у которых остаток от деления на M равен L (0< L < M - 1).
Вот есть такой код, но что-бы я не вводил, выдает, что чисел таких нет. Помогите пожалуйста, где ошибка.
program z; var i,n,M,f,L:integer; a:array [1..10] of integer; begin writeln('Введите кол-во элементов'); readln(n); writeln('Ввод элементов'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; writeln('Вывод элементов'); for i:=1 to n do write(a[i],' '); writeln; writeln('Введите делитель'); readln(M); writeln('Введите остаток'); readln(L); writeln('Числа, которые от деления на ',M,' дают остаток ',L); if (L>0) and (L<M-1) then begin for i:=1 to n do if (a[i] mod M)=l then begin writeln(a[i]); f:=1; end; end; if f=0 then writeln('Таких чисел нет'); end.
Программа выдает элементы, только если остаток равен 1. То есть L=1
Решение задачи: «Указать числа массива, у которых остаток от деления на М»
textual
Листинг программы
program z; type mas=array [1..10] of integer; procedure vvod(var a:mas;var n:byte); var i:byte; begin writeln('Введите кол-во элементов'); readln(n); writeln('Ввод элементов'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; end; procedure vyvod(a:mas;n:byte); var i:byte; begin writeln('Вывод элементов'); for i:=1 to n do write(a[i],' '); writeln; end; var i,n,f:byte; M,L:integer; a:mas; begin vvod(a,n); vyvod(a,n); writeln('Введите делитель'); readln(M); writeln('Введите остаток'); readln(L); writeln('Числа, которые от деления на ',M,' дают остаток ',L); f:=0; for i:=1 to n do if a[i] mod m=l then begin write(a[i],' '); f:=1; end; if f=0 then writeln('Таких чисел нет'); end.
Объяснение кода листинга программы
Этот код написан на языке Pascal и выполняет следующие действия:
- Создает тип данных
mas
, который представляет собой массив целых чисел размером от 1 до 10. - Определяет процедуры
vvod
иvyvod
, которые соответственно запрашивают и выводят количество и элементы массива. - Запрашивает у пользователя ввод количества элементов массива и сохраняет его в переменной
n
. - Запрашивает у пользователя ввод элементов массива и сохраняет их в массив
a
. - Выводит элементы массива.
- Запрашивает у пользователя ввод делителя и сохраняет его в переменной
M
. - Запрашивает у пользователя ввод остатка от деления и сохраняет его в переменной
L
. - Инициализирует переменную
f
значением 0. - Проходит по всем элементам массива
a
с помощью циклаfor
. - Проверяет, делится ли текущий элемент массива на
M
без остатка. Если да, то выводит этот элемент и устанавливает значениеf
равным 1. - После завершения цикла проверяет значение
f
. Если оно равно 0, то выводит сообщение о том, что таких чисел нет. - Завершает работу программы.