7 / 7 / 2
Регистрация: 26.11.2010
Сообщений: 96
1

Системы счисления переделать программу

25.05.2013, 12:10. Показов 540. Ответов 9
Метки нет (Все метки)

Мне необходимо сделать программу для перевода чисел из восьмеричной в двоичную с/с

Я нашла програмку для перевода из 10 в 2 с/с, помогите устранить ошибки и изменить...

вот программа:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
unit Unit2;
 
interface
 function Bin(x: Integer): string;
implementation
function Bin;
const t:array[0..1] of char = ('0','1');
var res:string
    d:0..1; //РУГАЕТСЯ В ЭТОМ МЕСТЕ
begin
res:='';
while (x<>0) do
begin
d:=x mod 2 ;
res:=t[d]+res;
x:=x div 2 ;
end;
Bin:=res;
 
end;
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
 
begin
a:=StrToInt(Edit1.Text);
Label1.Caption:=(Bin(a));
end;
 
end.
Добавлено через 8 минут
Ой, где ругается запятую потеряла)))))))

Но? все равно нужно переделать на 8-->2, подскажите в чем дубут изменения???
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2013, 12:10
Ответы с готовыми решениями:

Составить программу для перевода числа из 2-й системы счисления в 16-ю
Составить программу для перевода числа из 2-й системы счисления в 16-ю.

Создать программу в delphi 7 для перевода из 10-й системы счисления в 16-ю
Создать программу в delphi 7 для перевода из 10-й системы счисления в 16-ю.Очень прошу вас,оч...

Добавить в программу возможность ввода системы счисления начального числа
Ребята есть прога. Прога для перевода из одной системы счисления в другую. Нужно добавить...

Составить программу перевода из десятичной системы счисления в двоичную с помощью массива
Так как лазарус аналог делфи-решил написать сюда... И так,нужно составить программу перевода из...

9
560 / 483 / 168
Регистрация: 14.02.2012
Сообщений: 1,561
25.05.2013, 12:31 2
Вот нашел http://www.greatis.com/delphic... t2bin.html
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function OctToBin(OctStr: string): string;
 
  function DecToBinStr(N: Integer): string;
  var
    S: string;
    i: Integer;
  begin
    if N<>0 then
      for i:=1 to SizeOf(N)*8 do
      begin
        if N<0 then
          S:=S+'1'
        else
          S:=S+'0';
        N:=N shl 1;
      end
    else
      S:='0';
    Delete(S, 1, Pos('1', S)-1);
    case Length(S) mod 3 of
      1: S:='00'+S;
      2: S:='0'+S;
    end;
    Result:=S;
  end;
 
var
  i: Integer;
begin
  Result:='';
  for i:=1 to Length(OctStr) do
  begin
    if not (OctStr[i] in ['0','1','2','3','4','5','6','7']) then
    begin
      ShowMessage('This is not octal number');
      Result:='';
      Break;
    end
    else
      Result:=Result+DecToBinStr(StrToInt(OctStr[i]));
      while (Result[1]='0')and(Length(Result)>1) do
        Delete(Result, 1, 1);
  end;
end;
P.S. Не проверял
1
7 / 7 / 2
Регистрация: 26.11.2010
Сообщений: 96
25.05.2013, 12:53  [ТС] 3
Вот переделала, но есть ошибки, помогите исправить...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
unit Unit2;
 
interface
function OctToBin(OctStr: string): string;
 
implementation
function DecToBinStr(N: Integer): string;
  var
    S: string;
    i: Integer;
  begin
    if N<>0 then
      for i:=1 to SizeOf(N)*8 do
      begin
        if N<0 then
          S:=S+'1'
        else
          S:=S+'0';
        N:=N shl 1;
      end
    else
      S:='0';
    Delete(S, 1, Pos('1', S)-1);
    case Length(S) mod 3 of
      1: S:='00'+S;
      2: S:='0'+S;
    end;
    Result:=S;
  end;
 
 var
  i: Integer;
  Result, OctStr:string;
 
begin
  Result:='';
  for i:=1 to Length(OctStr) do
  begin
    if not (OctStr[i] in ['0','1','2','3','4','5','6','7']) then
    begin
    ShowMessage('This is not octal number');   //Ðóãàåòñÿ!!!
      Result:='';
      Break;
    end
    else
      Result:=Result+DecToBinStr(StrToInt(OctStr[i]));   //Ðóãàåòñÿ!
      while (Result[1]='0')and(Length(Result)>1) do
        Delete(Result, 1, 1);
  end;
end;
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
 
begin
a:=Edit1.Text;
Edit2.Text:=(OctToBin(a));
end;
 
end.
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
25.05.2013, 13:05 4
Дали функцию OctToBin, в которой функция DecToBinStr является локальной.
Так и надо оставить. Не хватает объявления функции в секции implementation:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
unit Unit2;
 
interface
 
  function OctToBin(OctStr: string): string;
 
implementation
 
function OctToBin(OctStr: string): string;
  function DecToBinStr(N: Integer): string;
  var
  ...
1
7 / 7 / 2
Регистрация: 26.11.2010
Сообщений: 96
25.05.2013, 13:18  [ТС] 5
у меня вот здесь ругается

Delphi
1
2
3
4
else
     Result:=Result+DecToBinStr(StrToInt(OctStr[i]));   //Ðóãàåòñÿ!
      while (Result[1]='0')and(Length(Result)>1) do
      Delete(Result, 1, 1);
пишет undeclared identifier: 'StrToInt'
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
25.05.2013, 13:24 6
Функция StrToInt находится в модуле SysUtils.
Может быть имя этого модуля не упомянуто в секции uses того модуля, где функция используется.
1
7 / 7 / 2
Регистрация: 26.11.2010
Сообщений: 96
25.05.2013, 13:29  [ТС] 7
как вот в том то и неприятность что упомянута...
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
25.05.2013, 13:33 8
С мистикой здесь мало кто знается.
Выкладывайте проект, разберутся.
1
7 / 7 / 2
Регистрация: 26.11.2010
Сообщений: 96
25.05.2013, 14:00  [ТС] 9
Ура, ура, ура......получилось вот программа, если кому интересно)))))

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
unit Unit2;
 
interface
 
uses SysUtils, Dialogs;
 
function OctToBin(OctStr: string): string;
 
implementation
function OctToBin(OctStr: string): string;
function DecToBinStr(N: Integer): string;
  var
    S: string;
    i: Integer;
  begin
    if N<>0 then
      for i:=1 to SizeOf(N)*8 do
      begin
        if N<0 then
          S:=S+'1'
        else
          S:=S+'0';
        N:=N shl 1;
      end
    else
      S:='0';
    Delete(S, 1, Pos('1', S)-1);
    case Length(S) mod 3 of
      1: S:='00'+S;
      2: S:='0'+S;
    end;
    Result:=S;
  end;
 
 var
  i: Integer;
 
 
begin
  Result:='';
  for i:=1 to Length(OctStr) do
  begin
    if not (OctStr[i] in ['0','1','2','3','4','5','6','7']) then
    begin
    ShowMessage('Это');
      Result:='';
      Break;
    end
    else
     Result:=Result+DecToBinStr(StrToInt(OctStr[i]));   //Ругается!
      while (Result[1]='0')and(Length(Result)>1) do
      Delete(Result, 1, 1);
  end;
end;
end.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
unit Unit1;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, Calendar, Menus, OleCtrls, SHDocVw, StdCtrls, ComCtrls,
  ExtCtrls, TeeProcs, TeEngine, Chart, Series, Buttons,Unit2;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var a:string;
 
begin
a:=Edit1.Text;
Edit2.Text:=(OctToBin(a));
end;
 
end.
Добавлено через 17 минут
Еще вопрос, может кто знает как сделать чтобы ввод числа заканчивался нажатием 'Inter' и сразу выдавался резутьтат(без кнопки)?
0
1073 / 986 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
25.05.2013, 14:25 10
У TEdit есть событие OnKeyDown. Для Edit1 Нужно создать процедуру обработки этого события, а в ней так:
Delphi
1
2
3
4
5
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Shift = []) and (Key = VK_RETURN) then
    Edit2.Text:=(OctToBin(Edit1.Text));
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2013, 14:25
Помогаю со студенческими работами здесь

Написать программу перевода действительных чисел из любой системы счисления в десятичную и обратно
12366

Из двоичной системы счисления в десятичную систему счисления
Программа перевода числа из двоичной системы счисления в десятичную систему счисления

системы счисления
Здравствуйте. не знаю куда точно писать, но пишу сюда .вот есть дробные числа десятичные, как их...

Системы счисления.
Уважаемые программисты помогите написать программу, которая будет переводить целые числа в разные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru