Вопрос задан 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.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Крумкачев Матвей.
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
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Похоже, что у вас есть несколько ошибок в коде. Вот исправленная версия вашей программы на языке Pascal:

pascal
var 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.

В этой версии кода:

  1. Мы используем цикл while для перебора всех чисел от a до b.
  2. Для каждого числа k, мы вычисляем количество цифр в нем и проверяем, делятся ли все цифры числа k.
  3. Если число удовлетворяет условиям, то выводим его на экран.

Учтите, что код может быть доработан или упрощен, но данное исправление должно помочь вам понять основные ошибки в исходном коде.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос