![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Trofimov Artur |
![]()
Сообщение
#1
|
Гость ![]() |
Товарищи!!!
Помогите пожалуйста. До сессии мне ныжно написать программу перевода числа из одной системы счисления в другую (bin, oct, dec, hex). Сам почему-то не могу :о( Не получается. Помогите пожалуйста. Все должно выглядеть примерно так: Сначала забается из какой сис-мы ныжно совершить перевод, а потом в какую. Далее выводится результат. Или так: Вводится число в определенной сис-ме счисления и выводется его значение в других сис-мах. |
![]() ![]() |
mj |
![]()
Сообщение
#2
|
![]() Adminь ![]() ![]() ![]() ![]() Группа: Администраторы Сообщений: 803 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
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. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 8:02 |