Показать сообщение отдельно
Старый 24.12.2015, 10:36   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Solom1k Посмотреть сообщение
Дано некое число. Выбросить из него наибольшую и наименьшую цифру. Если наиболее высокая цифра не одна, выбросить их все, аналогично поступить с наименьшей цифрой.
Пожалуйста.
Несколько пояснений.
1. Поскольку задача решена через строковый формат, максимальная длина числа составляет 255 цифр.
2. Программа написана на Free Pascal. Естественно, оттестирована. За возможные глюки этого идиотского АВС (может закапризничать Val) автор не отвечает.
Код:
Var
 S:String;
 Q,Qmin,Qmax:Byte;
 i,Code,L:Integer;
 b:boolean;


Begin
 Repeat
  b:=true;
  Writeln('Enter the number:');
  Readln(S);
  L:=Length(S);
  for i:=1 to L do
   if (Ord(S[i])<48) or (Ord(S[i])>57) then
    begin
     b:=false;
     Writeln('Only digits allowed!');
    end;
 Until b;
 Val(S[1],Qmin,Code);
 Val(S[1],Qmax,Code);
 for i:=2 to L do
  begin
   Val(S[i],Q,Code);
   if Q<Qmin then Qmin:=Q;
   if Q>Qmax then Qmax:=Q;
  end;
 i:=0;
 Repeat
  Inc(i);
  Val(S[i],Q,Code);
  if (Q=Qmax) or (Q=Qmin) then
   begin
    Delete(S,i,1);
    Dec(i);
    Dec(L);
   end;
 Until i=L;
 Writeln('Result:');
 Writeln(S);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070