Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Перевод из 10-ной в 8-ю и наоборот 
:(
    Опции темы
WhiteRaven
Дата 20.10.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Помогите пожалуйста реализовать в Делфи перевод из 10-ой СС в 8-ю и наоборот.
ОЧЕНЬ НАДО.
PM MAIL   Вверх
THandle
Дата 20.10.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



Код

function OctToDec(const OctValue: string): integer;
var
  i: integer;
begin
  result := 0;
  for i := 1 to Length(OctValue) do
    if not (OctValue[i] in ['0'..'7']) then
      raise Exception.Create('Строка: ' + OctValue + ' не является восьмеричным числом')
    else
      result := result + (Ord(OctValue[i]) - 48) shl ((Length(OctValue) - i) * 3);
end;


8 -> 10
PM   Вверх
mr.Anderson
Дата 20.10.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



WhiteRaven, ну дык. Чисто по теории информатики перевод из 10-й в систему с основанием N производится делением исходного числа на N и сбор остатков от деления в обратном порядке. То же самое требуется реализовать в программе. Последовательно делим число на 8, берем остатки от деления, потом собираем эти остатки в обратном порядке.

THandle, нужно наоборот. smile

Это сообщение отредактировал(а) mr.Anderson - 20.10.2008, 21:07


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
THandle
Дата 20.10.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 30
Всего: 372



mr.Anderson

Цитата(WhiteRaven @  20.10.2008,  21:30 Найти цитируемый пост)
и наоборот.


Написать обратный код не сложно... Этот просто я уже когда то давал, а писать сейчас, собственно и не в чем smile
PM   Вверх
WhiteRaven
Дата 21.10.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



сделал я перевод из 10-й в 8-ю но вот я так не смог реализовать перевод из 8-й в 10-ю (нуб)
Может ли кто помочь перделать функцию которою дал THandle под эту часть проги (из 2-ой СС в 10-ю)
Код
  else if misc=2 then
begin
sum:=0;
write('Enter 2 SS = '); Readln(s);
For i:=Length(s)-1 DownTo 1 Do
  Begin
  If s[i]='1' Then
    Begin
    sum2:=1;
    For j:=1 To Length(s)-i Do sum2:=sum2*2;
    End
    Else sum2:=0;
  sum:=sum+sum2;
End;
If s[Length(s)]='1' Then Inc(sum);
writeln('Translated 10 SS = ',IntToStr(sum));
end
else writeln('That menu is not exist');
readln;
end.


PM MAIL   Вверх
WhiteRaven
Дата 20.11.2008, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 19.10.2008

Репутация: нет
Всего: нет



Вот как в эту часть проги добавить проверку - чтоб при вводе букв выдавало сообщение что неверное значение и т.п.
У меня не получилось как уже не пробовал
Код

uses
  SysUtils;
var
  vis,s: string;
  iMod, des, misc, i, j, result :integer;
begin
writeln('Press 1: 10 sysnem to 8 sysnem');
writeln('Press 2: 8 system to 10 system');
readln(misc);
if misc=1 then
begin
Write('Input 10 system = ');
  Readln(des);
  if not (des>=0) and (des<=9) then
      writeln('number is not number 10 system')
      else
  while des >= 8 do
    begin
      iMod := des mod 8;
      des := des div 8;
      vis := IntToStr(iMod) + vis;
    end;
  vis := IntToStr(des) + vis;
  Writeln('Converted 8 system = ', vis);
  end

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.