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

Цитата:
Сообщение от Asya_inter Посмотреть сообщение
Подскажите, как решить данную задачу (в паскаль авс)?
К сожалению, эту дрянь (АВС) у себя не держу, поэтому сделал программу на Turbo. Чтобы перевести в АВС, нужно, во-первых, приляпать сверху Program Tralala_Bububu, во-вторых, заменить всюду LongInt на Integer, а вот в-третьих... Точно не помню, но мне кажется, что в АВС какие-то свои аналоги процедур STR и VAL (перевод числа в строку и строки в число, соответственно), так что это нужно уточнить.
Код:
Var
 N,M:LongInt;
 Max,NO:Byte;
 St,SM:String;

Function Dec2Bin(D:LongInt):String;
var
 S1,S2,C:String;
 i,L:byte;
 Q:LongInt;
begin
 Q:=D;
 S1:='';
 repeat
  STR((Q mod 2), C);
  S1:=S1+C;
  Q:=Q div 2;
 until Q=0;
 L:=Length(S1);
 S2:='';
 for i:=1 to L do
  S2:=S2+S1[L-i+1];
 Dec2Bin:=S2;
end;

Function Ones(S:String):Byte;
var
 i,L,P,M:Byte;
 C:String;
 Code:Integer;
begin
 P:=0;
 L:=Length(S);
 for i:=1 to L do
  begin
   C:=S[i];
   Val(C,M,Code);
   if M=1 then Inc(P);
  end;
 Ones:=P;
end;

Begin
 Max:=0;
 Repeat
  Write('Next number (0 to quit): ');
  Readln(N);
  if N>0 then
   begin
    St:=Dec2Bin(N);
    NO:=Ones(St);
    Writeln('Binary: '+St+'    Number of ones: ',NO);
    if NO>Max then
     begin
      Max:=NO;
      M:=N;
      SM:=St;
     end;
   end;
 Until N=0;
 Writeln;
 Writeln('Maximal number of ones (',Max,') is in N= ',M, ' ('+SM+')');
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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