Выбросить из записи числа цифры от k1 до k2, оставив прежним порядок его остальных цифр.

Murgl Flor

Дано натуральное число N. Выбросить из записи числа цифры от k1 до k2, оставив прежним порядок его остальных цифр. Например, при k1=1, k2=5 из числа N будут удалены цифры от 1 до 5, возьмем число 59015518 – должно получиться 908. Если можете,то приложите пожалуйста блок-схему алгоритма.
1 ответ

Murgl Flor

Вариант работает если натуральное число вмещается в Диапазон Integer k1 и k2 от 0 до 9
      var S:String; //Строковая переменная для обработки числа как строки
           N:Integer;//Натуральное число
 
           Arr:Array of Integer; //Массив чисел от k1 до k2
           k1,k2:Integer;
           i,j,m:Integer; //i,j - счетчики циклов, m -для массива чисел k1..k2
 
begin
 
  S:='';  m:=0; j:=0;  //Обнуляем переменные для исключения ошибок
 
  {Небольшой интерфейс}
  writeln('N - Naturalnoe chislo ');
  writeln('K1 = Nachalo udalenia');
  writeln('K2 = Konec udalenia');
  writeln('K - wwodit ot 0 do 9');
  writeln;
 
  {Вводим данные}
  write('N = ');
  readln(N);
  write('K1 = ');
  readln(k1);
  write('K2 = ');
  readln(k2);
 
     setlength(Arr,k2-k1+1); //Ставим длину динамическому массиву
     
   write('Udaleni chisla '); 
     for i:=k1 to k2 do Begin      //Заполняем массив числами от k1 до k2
      Arr[m]:=i;
      inc(m);
      write(i,' ');    //Выводим на экран числа от k1 до k2
     end;
 
 
      S:=IntToStr(N);  //Перекидываем N в строковую переменную
        writeln;
       for i:=length(S) downto 1 do Begin //Проходим посимвольно с конца строки
           repeat
                if S[i]=IntToStr(Arr[j]) then Begin //Если символ из строки совпадает с одним из символов нашего массива
                      Delete(S,pos(S[i],S),1); //То удаляем этот символ из строки
                end;
           inc(j); //увеличиваем счетчик для массива если цикл пройден
           until j=length(Arr); //Цикл выполняется пока его счетчик не станет равен длине массива
           j:=0; //Если цикл закончен - ставим счетчик для массива в начало
       end;
     writeln;
    writeln('S= ',N); //Выводим первоначальное число
    writeln('Resultat = ',S); //Выводим результат обработки
  readln;
end.
Блок схему приложить не могу, не умею их делать