Почему приведённая ниже программа может не работать (Pascal)?

Есть три цифры 1, 3, 7. Из них в порядке возрастания составляются числа. Например 1, 3, 7, 11, 13, 17, 31, 33 и т.д. Известна позиция числа в этой последовательности. Например для позиции 10 характерно число 71. Необходимо по номеру позиции определить само число. Вот код:
Program Numbers_Maysen;
var N,k,c,i: integer; s:string; bool:boolean; label 1;
begin
read(N);
c:=0;
k:=0;

   repeat
      bool:=true;
      c:=c+1;
      str(c,s);
      for i:=1 to length(s) do  begin
         if pos(s[i], '137') = 0 then bool:=false else k:=k+1;
      end;
   until k = N;
   writeln(c);
end.

Забыл указать, что эта программа на позиции 10 выдаёт число 14. А на четвёртой позиции - 10
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
alsopub
@alsopub
Попробуйте так:
Program Numbers_Maysen;
var N,k,c,i: integer; s:string; bool:boolean;
begin
read(N);
c:=0;
k:=0;

   repeat
      bool:=true;
      c:=c+1;
      str(c,s);
      for i:=1 to length(s) do  begin
         if pos(s[i], '137') = 0 then bool:=false;
      end;
      if (bool) then k := k + 1;
   until k = N;
   writeln(c);
end.

Можно вместо if pos(s[i], '137') = 0 then bool:=false; сделать
if pos(s[i], '137') = 0 then begin
  bool:=false;
  break;
end;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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