Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2009, 09:05   #1
SaNest
Новичок
Джуниор
 
Регистрация: 30.12.2009
Сообщений: 1
По умолчанию Delphi программа преобразования из десятичной в восьмеричную СС

Всем привет! Помогите с кодом, что и как работает

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit; { поле для хранения десятичного числа }
Button1: TButton;
Label2: TLabel;
Edit2: TEdit; { результат }
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;
const zn:string[8]='01234567'; { что тут присвоили???? }
var
Form1: TForm1;

implementation

{$R *.dfm}

function convert(n:longint):string; { метод преобразования числа
в восьмеричную систему счисления }
var s:string;
begin
s:='';
while n>0 do
begin
s:=zn[n mod 8+1]+s; { почему +1 ???? }
n:=n div 8;
end;
Convert:=s;
end;

Function Str2Lint(Str : string) : longint; { вообще не пойму для чего что она делает??? }
var
Num : longint;
ErrCode : integer;
begin
Val(Str,Num,ErrCode);
if ErrCode = 0 then Str2Lint:= Num
else Str2Lint:= -1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=Convert(Str2Lint(Edit1. Text));
end;
end.
SaNest вне форума Ответить с цитированием
Старый 30.12.2009, 21:45   #2
Анатоль
Пользователь
 
Регистрация: 17.12.2009
Сообщений: 74
По умолчанию

Вот код перевода из 10 в 8ричну.
read(a);
s := '';{s tipa string}
while a > 0 do
begin
s := s + char((a mod 8)+48);
a := a div 8;
end;
for i := s downto 1 do
write(s[i]);
число будет хранится перевёрнутым в строке s.
Я писал под паскаль, но насколько знаю в Дельфи почти то же самое так что переделаешь.
А то что ты где то нарыл вообще хрень непонятная.
Анатоль вне форума Ответить с цитированием
Старый 31.12.2009, 07:52   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Да нет, код-то в принципе адекватный
Цитата:
Код:
const zn:string[8]='01234567'; { что тут присвоили???? }
Строка из символов, которые могут встретиться в восьмеричной записи числа.
Цитата:
Код:
s:=zn[n mod 8+1]+s; { почему +1 ???? }
Потому что остаток от деления на 8 даёт значения от 0 до 7, а элементы массива нумеруются от 1 до 8
Цитата:
Код:
Function Str2Lint(Str : string) : longint; { вообще не пойму для чего что она делает??? }
Переводит строку в число. Почему не используется стандартный StrToInt видимо останется тайной, покрытою мглою
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. перевод из десятичной системы счисления в двоичную Xeon332 Помощь студентам 3 24.01.2011 13:54
Преобразования Pascal в Delphi non1ka Помощь студентам 21 05.06.2008 12:54
Помогите перевести число из десятичной в шестнадцатиричную систему TAUREN Помощь студентам 5 06.10.2007 14:06
преобразование десятичной дроби в обыкновенную и обратно, Delphi ИгорьОК Помощь студентам 4 04.04.2007 21:12