
Вопрос задан 24.08.2023 в 20:40.
Предмет Информатика.
Спрашивает Королёв Дима.
Прошу подсказать в программе, у меня есть свой код, но он не правильный точно. Язык pascal
Программа вводит натуральные числа a и b и выводит на экран все натуральные числа на отрезке [a, b] делящиеся на каждую из своих цифр var a, b, k, t, m, i, p, d, j: integer; begin write('Enter a and b: '); readln(a, b); //10 20 t := 0; repeat k := a + 1; j := k; t := k; while j <> 0 do begin p := j mod 10; d := d + 1; j := j div 10; // стало 0 end; for i := 1 to d do //по количеству знаков делает begin if not (k / t mod 10 = 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8 or 9) then m := m - 1; t := t div 10; end; if m > 0 then writeln(k); until a = b; end.

Ответы на вопрос

Отвечает Крумкачев Матвей.
Var
a, b, i, j, c: integer;
f:boolean;
begin
write('Enter a and b: ');
readln(a, b); //10 20
for i:=a to b do
begin
f:=true;
j:=i;
while j <> 0 do
begin
c:=j mod 10;
if (c = 0)or(i mod c <> 0) then f:=false;
j := j div 10;
end;
if f then writeln(i);
end;
end.
Пример:
Enter a and b: 10 20
11
12
15
a, b, i, j, c: integer;
f:boolean;
begin
write('Enter a and b: ');
readln(a, b); //10 20
for i:=a to b do
begin
f:=true;
j:=i;
while j <> 0 do
begin
c:=j mod 10;
if (c = 0)or(i mod c <> 0) then f:=false;
j := j div 10;
end;
if f then writeln(i);
end;
end.
Пример:
Enter a and b: 10 20
11
12
15



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Похоже, что у вас есть несколько ошибок в коде. Вот исправленная версия вашей программы на языке Pascal:
pascalvar a, b, k, t, m, i, p, d, j: integer; begin write('Enter a and b: '); readln(a, b); while a <= b do begin k := a; t := k; m := 0; // Вычисляем количество цифр в числе d := 0; j := k; while j > 0 do begin d := d + 1; j := j div 10; end; // Проверяем делимость на каждую цифру for i := 1 to d do begin p := t mod 10; if (p = 0) or (k mod p <> 0) then begin m := 1; break; end; t := t div 10; end; // Если все цифры прошли проверку, выводим число if m = 0 then writeln(k); a := a + 1; end; end.
В этой версии кода:
- Мы используем цикл
while
для перебора всех чисел отa
доb
. - Для каждого числа
k
, мы вычисляем количество цифр в нем и проверяем, делятся ли все цифры числаk
. - Если число удовлетворяет условиям, то выводим его на экран.
Учтите, что код может быть доработан или упрощен, но данное исправление должно помочь вам понять основные ошибки в исходном коде.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili