Цитата:
Сообщение от 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.