Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Jessy James
Форумчанин
2 / 2 / 0
Регистрация: 24.06.2013
Сообщений: 209
02.12.2013, 20:29
  #1
Написать программу(калькулятор систем счисления) в Lazarus которая будет переводить число из произвольной СС в другую произвольную СС начиная с 2-16 СС. Ещё чтобы была возможность вводить число уже в произвольной СС.
AdAgent
Объявления
02.12.2013, 20:29
Jessy James
Форумчанин
2 / 2 / 0
Регистрация: 24.06.2013
Сообщений: 209
04.12.2013, 19:16  [ТС]
  #2
Как сделать операции сложение, вычитание, умножение, деление с учётом всех ограничений?

Добавлено через 11 минут
И как сделать так, чтобы вводимому мною числу можно присваивить любую СС, не только десятичную?
ZfoxAK
Форумчанин
265 / 257 / 19
Регистрация: 26.11.2012
Сообщений: 964
05.12.2013, 07:00
  #3
Цитата Сообщение от Jessy James Посмотреть сообщение
Как сделать операции сложение, вычитание, умножение, деление с учётом всех ограничений?
О каких оганичений идет речь? (Деление на 0)? ....
Цитата Сообщение от Jessy James Посмотреть сообщение
Как сделать операции сложение, вычитание, умножение, деление
Например приведение всех вводимых значений к одной системе счислений например к десятичной и производить операции сложения и т.д., результат переводит в исходную СС.
Цитата Сообщение от Jessy James Посмотреть сообщение
И как сделать так, чтобы вводимому мною числу можно присваивить любую СС, не только десятичную?
Ограничить ввод знаков изходя из системы счисления.
Arigato
Программист
133 / 124 / 19
Регистрация: 05.12.2013
Сообщений: 377
Записей в блоге: 3
05.12.2013, 12:22
  #4
Что еще за калькулятор, обычный кнопочный или надо вычислить выражение, записанное в строке?
Jessy James
Форумчанин
2 / 2 / 0
Регистрация: 24.06.2013
Сообщений: 209
05.12.2013, 13:29  [ТС]
  #5
Цитата Сообщение от Arigato_RU Посмотреть сообщение
Что еще за калькулятор, обычный кнопочный или надо вычислить выражение, записанное в строке?
Кнопочный.
Arigato
Программист
133 / 124 / 19
Регистрация: 05.12.2013
Сообщений: 377
Записей в блоге: 3
05.12.2013, 13:36
  #6
Тогда о ограничениях речь, чтобы деления на ноль не было? Если пользователь вводит число кнопками, то букву он ввести не может. Единственное, что при нажатии десятичной точки надо проверять, чтобы других точек в запаси числа еще не было.
Jessy James
Форумчанин
2 / 2 / 0
Регистрация: 24.06.2013
Сообщений: 209
05.12.2013, 13:38  [ТС]
  #7
И что значит граничить ввод знаков изходя из системы счисления?
Вот операция по переводу из 10 СС в любую другую, что сюда нужно добавить, чтобы выбирать для вводимого числа свою произволшьную СС?
Код Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
begin
s:=Edit1.text; //число
osn:=StrToint(Edit2.Text);
if pos(',',s)<>0 then
begin
intc:=StrToInt(copy(s,1,pos(',',s)-1)); //целая часть
frcc:=StrToInt(copy(s,pos(',',s)+1,length(s)-pos(',',s)));// дробная часть
Label1.Caption:=Convert(intc,osn)+','+Convert(frcc,osn);
end
else if  pos(',',s)=0 then
Label1.Caption:=Convert(StrToInt(s),osn);
end;                                             
ZfoxAK
Форумчанин
265 / 257 / 19
Регистрация: 26.11.2012
Сообщений: 964
06.12.2013, 05:52
  #8
Цитата Сообщение от Jessy James Посмотреть сообщение
И что значит граничить ввод знаков изходя из системы счисления?
По мимо десятичной СС существует много других. Наиболее известных: двоичная т.е. используется знаки 0, 1 тогда необходимо ограничить ввод только этих знаков; 8-ная соответсвенно 0,1,2,3,4,5,6,7;
16-ная 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F в которой как видно из ряда присутсвуют и буквы.

Добавлено через 6 минут
Цитата Сообщение от Jessy James Посмотреть сообщение
Convert
Если это не собсвенная функция, то Convert
Функция Преобразует одну величину измерения в другую например длины, массы и т.д.

Добавлено через 9 минут
Здесь готовые коды преобразование СС
Jessy James
Форумчанин
2 / 2 / 0
Регистрация: 24.06.2013
Сообщений: 209
06.12.2013, 06:08  [ТС]
  #9
Я понял вас, я не так выразился...
В общем, у меня 4 Edit на форме...
В 1 ввожу число(оно ведь вводится в 10тичной СС?)
Во 2 ввожу СС для этого числа
В 3 ввожу СС в которую хочу перевести число
В 4 результат.
Так вот мне надо как то связать 1 и 2 Эдит...
ZfoxAK
Форумчанин
265 / 257 / 19
Регистрация: 26.11.2012
Сообщений: 964
06.12.2013, 06:49
  #10
Цитата Сообщение от Jessy James Посмотреть сообщение
В 1 ввожу число(оно ведь вводится в 10тичной СС?)
В Edit вводится знаки, а не цифры по этому результатом будет строка типа string. А вот какие знаки могу быть внесены определяет программист. Для определения СС если число СС для работы ограничено 1-5 шт. то лучше использовать RadioButton расположенных на компоненте группирования GroupBox. Что позволит устанавливать выбор для одной компоненты RadioButton из нескольких.
Цитата Сообщение от Jessy James Посмотреть сообщение
Так вот мне надо как то связать 1 и 2 Эдит...
в процедуре обработки события OnChange компоненты Edit1 пишется код типо
Код Delphi
1
IF Edit2.text = 2 then //действия связанные с СС 2
. Или Case
ZfoxAK
Форумчанин
265 / 257 / 19
Регистрация: 26.11.2012
Сообщений: 964
06.12.2013, 07:03
  #11
Вот пример.
Вложения
Тип файла: rar RadioBut.rar (163.8 Кб, 21 просмотров)
Булат Шакиров
Форумчанин
13 / 18 / 1
Регистрация: 01.11.2013
Сообщений: 85
07.12.2013, 16:40
  #12
Могу дать заготовку:
Код Pascal
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
function stepen(x,n:longint):longint;
var
k,i:longint;
begin
k:=1;
if n=0 then
k:=1
else
for i:=1 to n do
k:=k*x;
stepen:=k;
end;
function _10toR(x:longint;R:longint):string;
var
i,ost:longint;
s,st,chislo:string;
begin
repeat
ost:=x mod R;
x:=x div R;
if ost>9 then
st:=chr(ord('A')-10+ost)
else str(ost,st);
s:=s+st;
until x=0;
for i:=1 to length(s) do
chislo:=chislo+s[length(s)-i+1];
_10toR:=chislo;
end;
function _Rto10(s:string;R:longint):longint;
var
i,z,m,n:longint;
begin
m:=0;
for i:=1 to length(s) do
begin
val(s[i],n,z);
if z<>0 then
n:=10+ord(UpCase(s[i]))-ord('A');
m:=m+stepen(R,length(s)-i)*n;
end;
_Rto10:=m;
end;
function AnyToDec(s:string;R:longint):real;
var
ints:string;
doubles:string;
intR:longint;
i,z,n:longint;
doubleR,m:real;
begin
ints:=copy(s,1,pos('.',s)-1); //целая часть
intr:=_Rto10(ints,r);
doubles:=copy(s,pos('.',s)+1,Length(s)-1); //дробная часть
m:=0;
for i:=1 to length(doubles) do
begin
val(doubles[i],n,z);
if z<>0 then
n:=10+ord(UpCase(doubles[i]))-ord('A');
m:=m+n/(stepen(R,i));
end;
doubleR:=m+intr; // <---- Здесь точность теряется
AnyToDec:=doubler;
end;
function DecToAny(x:real;R:longint):string;
var
tochnost,intx : longint;
doublex,tempx : real;
ints,doubles : string;
begin
ints:=_10toR(Round(int(x)),r);
doublex:=frac(x);
doubles:='';
tochnost:=1;
while (doublex>0.0) or (tochnost=8) do
begin
doublex:=doublex*r;
intx:=round(doublex-frac(doublex));
doublex:=doublex-intx;
doubles:=doubles+_10toR(intx,r);
tochnost:=tochnost+1;
end;
DecToAny:=ints+'.'+doubles;
end;
begin
writeln(_Rto10('12abcdef',16));
Writeln(_10toR(313249263,16));
writeln(AnyToDec('def.EFA',16):32:12);
Writeln(DecToAny(313249263.9296875,16));
readln;
end.
Yandex
Объявления
07.12.2013, 16:40
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi Преобразование из систем счисления
Преобразование из систем счисления: 16-тиричной, 8-ричной, 3-ичной, 2-ичной
Delphi для начинающих DarkSHIZ 24.06.2014 09:26
Delphi Создать калькулятор для различных систем счисления
Создать целочисленный калькулятор позволяющий работать в десятичной двоичной восьмеричной и шестнадцатиричной системе счисления
Delphi для начинающих MfnsterEnergy 05.04.2014 00:16
C++ Builder программа калькулятор систем счисления
нужна программа на с++ builder для перевода чисел с 10 системы счисления в 2,8,16 и наоборот, учитывая дробную часть
C++ Builder lilicat 09.01.2014 10:35
C++ Builder Калькулятор разных систем счисления
Помогите советом или ссылкой. А то не имею представления как это все организовать, что бы работало. Нужно сделать задание в Borland С++ Builder 6 программку, которая могла бы делать операции: +, -,...
C++ Builder acebo 06.04.2013 20:21
Delphi Перевод из разных систем счисления.
Написал код для программы по переводу из 10-чной системы счисления в 2,8,16-ичные системы. все работает, но в 16-ричной после 10 идут буквы (A...F), а у меня числа. пытался через оператор "case"-не...
Delphi для начинающих SMIRNOFF2096 25.03.2012 15:06
Delphi Калькулятор систем счисления
Люди, помогите пожалуйста, нужны коды на калькулятор для разных систем счисления, как делать операции по переводу чисел и умножению, сложению, вычитанию их. Ну или, если у кого есть исходники,...
Delphi для начинающих Stone 11.04.2011 23:38
Pascal Калькулятор систем счисления
Плиииз помогите сделать задачку Програмка должна переводить числа из двоичной или 8-ричной 10-тичной...16-тиричной систем счисления в эти же 8-ричную...16-ричную и тд....то есть программа у...
Pascal (Паскаль) PlogiAt 03.06.2010 16:22
Delphi Написать на Делфи калькулятор систем счисления.
Всем доброго времени суток.Я понимаю что я очередной вася с 0 постами который хочет чтоб ему помогли но всё же задачка лёгкая для спецов,эсли невпало скинте проект)Буду очень презнателен)
Delphi для начинающих Крыведко 20.05.2008 21:26
Опции темы

Текущее время: 02:59. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.