Case y of { определение клавиш которые можно будет нажимать } 1,3 : begin { если перевод из десятиричного кода } Isx:=10; Keys:=['0'..'9']; { возможные клавиши } If y=1 Then Kon:=2 else Kon:=16; { присвоение системы исчисления результата } end; 2,5 : begin Isx:= 2; Keys:=['0','1']; { определение клавиш которые можно будет нажимать } If y=2 Then Kon:=10 else Kon:=16; { присвоение системы исчисления результата } end; 4,6 : begin isx:=16; keys:=['0'..'9','A'..'F']; { определение клавиш которые можно будет нажимать } if y=4 then kon:=10 else kon:=2; { присвоение системы исчисления результата } end; end; Repeat { основной цикл для перевода } Write('? '); Promeg:=0; Kol:=0; Otv:=''; { подготовительные действия } Repeat { цикл для ввода числа } klav:=ReadKey; { чтение клавиши } if UpCase(Klav) in Keys then begin { если клавиша допустимая } kol:=kol+1; { количество символов в исходном числе } a[kol]:=UpCase(Klav); { запоминание введенного символа } Write (a[kol]); { вывод нажатого символа } end; if (Ord(Klav)=8) and (Kol>0) then begin { если клавиша ЗАБОЙ } kol:=kol-1; GoToXY(WhereX-1,WhereY); ClrEol; end; Until (Ord(klav)=13) or (Ord(klav)=27); { пока не нажата ВВОД или ESC } if Ord(klav)=13 then begin { если клавиша ВВОД - начало обработки результата } for i:=1 to kol do begin { перевода введенного числа в десятеричную систему} if a[i]<'A' then Znach:=Ord(a[i])-48 else Znach:=Ord(a[i])-55; promeg:=promeg+Znach*Stepen(isx,kol-i); end; i:=0; Repeat { определение максимального порядка результата } i:=i+1; Chast:=Trunc(Promeg/Stepen(Kon,i)); Until Chast<Kon; For j:=i downto 0 do begin { перевод в нужную систему исчисления } Help:=Trunc(Promeg/Stepen(Kon,j)); If Help>9 Then Pom:=Chr(55+Help) Else Str(Help,Pom); Otv:=Otv+Pom; Promeg:=Promeg-Help*Stepen(Kon,j); end; WriteLn(' = ',Otv); { вывод результата } end; { конец обработки результата } Until Ord(Klav)=27; { если нажата ESC то выход в основное меню } Zast; { вывод заставки } end; Until (Ord(Klav)=13) and (y=7); { если в меню нажали ESC или ВВОД на выходе } ClrScr { очистить экран } end.
|