Указать числа массива, у которых остаток от деления на М - 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 и выполняет следующие действия:

  1. Создает тип данных mas, который представляет собой массив целых чисел размером от 1 до 10.
  2. Определяет процедуры vvod и vyvod, которые соответственно запрашивают и выводят количество и элементы массива.
  3. Запрашивает у пользователя ввод количества элементов массива и сохраняет его в переменной n.
  4. Запрашивает у пользователя ввод элементов массива и сохраняет их в массив a.
  5. Выводит элементы массива.
  6. Запрашивает у пользователя ввод делителя и сохраняет его в переменной M.
  7. Запрашивает у пользователя ввод остатка от деления и сохраняет его в переменной L.
  8. Инициализирует переменную f значением 0.
  9. Проходит по всем элементам массива a с помощью цикла for.
  10. Проверяет, делится ли текущий элемент массива на M без остатка. Если да, то выводит этот элемент и устанавливает значение f равным 1.
  11. После завершения цикла проверяет значение f. Если оно равно 0, то выводит сообщение о том, что таких чисел нет.
  12. Завершает работу программы.

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

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