IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> !!!Переход от одной системы счисления к другой!!!
Trofimov Artur
сообщение 10.05.2003 14:27
Сообщение #1


Гость






Товарищи!!!
Помогите пожалуйста.
До сессии мне ныжно написать программу перевода числа из одной системы счисления в другую (bin, oct, dec, hex).
Сам почему-то не могу :о( Не получается.
Помогите пожалуйста.

Все должно выглядеть примерно так:
Сначала забается из какой сис-мы ныжно совершить перевод, а потом в какую. Далее выводится результат.
Или так:
Вводится число в определенной сис-ме счисления и выводется его значение в других сис-мах.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
mj
сообщение 11.05.2003 12:28
Сообщение #2


Adminь
****

Группа: Администраторы
Сообщений: 803
Пол: Мужской
Реальное имя: Евгений

Репутация: -  5  +


     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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 8:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"