Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8

Арифметические действия в различных системах счисления

03.06.2011, 22:43. Показов 978. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый день!
прошу знающих помочь с поиском или составлением программы.
программа должна выполнять действия сложения, вычитания, деления и умножения в различных системах счисления, в том числе и числа с плавающей запятой.
может быть, у кого-нибудь есть такая программка? или помогите советом... пожалуйста! очень на вас надеюсь...
с уважением.

Добавлено через 4 часа 29 минут
ребят!!!! я нашла в сетях кое-как программу!!! но она выдает ошибку и я в ней ничего не могу понять(((

посмотрите пожалуйста! что там не так, почему не работает?..


очень на вас надеюсь!!!
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
var
    notation: byte;
    decimal1: integer; binary1, octal1, hexa1: string;
    decimal2: integer; binary2, octal2, hexa2: string;
    decimal_res: longint; binary_res, octal_res, hexa_res: string;
    operation: char;
 
function decimal_binary(decimal:integer): string;
begin
    decimal_binary := '';
    if decimal = 0 then decimal_binary := '0';
    while decimal > 0 do begin
        decimal_binary := chr(ord('0') + (decimal mod 2)) + decimal_binary;
        decimal := decimal div 2
    end;
end;
 
function decimal_octal(decimal:integer): string;
begin
     decimal_octal := '';
    if decimal = 0 then decimal_octal := '0';
    while decimal > 0 do begin
        decimal_octal := chr(ord('0') + (decimal mod 8)) + decimal_octal;
        decimal := decimal div 8
    end;
end;
 
function decimal_hexa(decimal:integer):string;
var digit:byte; ch:char;
begin
     decimal_hexa := '';
    if decimal = 0 then decimal_hexa := '0';
    while decimal > 0 do begin
        digit := decimal mod 16;
        if digit in [10..15] then
            case digit of
            10: ch := 'A';
            11: ch := 'B';
            12: ch := 'C';
            13: ch := 'D';
            14: ch := 'E';
            15: ch := 'F'
            end
        else
            ch := chr(ord('0') + digit);
        decimal_hexa := ch + decimal_hexa;
        decimal := decimal div 16
    end;
end;
 
function binary_decimal(binary:string):integer;
var n,m,i,j,digit:byte; pow:integer;
begin
    n := length(binary);
    binary_decimal := 0;
    m := n;
    for i:=1 to n do begin
        digit := ord(binary[i]) - ord('0');
        m := m - 1;
        if digit = 1 then begin
            pow := 1;
            for j:=1 to m do
                pow := pow * 2;
            binary_decimal := binary_decimal + pow;
        end;
    end;
end;
 
function octal_decimal(octal:string):integer;
var n,m,i,j,digit:byte; pow:integer;
begin
     n := length(octal);
    octal_decimal := 0;
    m := n;
    for i:=1 to n do begin
        digit := ord(octal[i]) - ord('0');
        m := m - 1;
        pow := 1;
        for j:=1 to m do
            pow := pow * 8;
        octal_decimal := octal_decimal + digit * pow;
    end;
end;
 
function hexa_decimal(hexa:string):integer;
var n,m,i,j,digit:byte; pow:integer; ch: char;
begin
    hexadecimal := '';
    while decimal > 0 do begin
        digit := decimal mod 16;
        if digit in [10..15] then
            case digit of
            10: ch := 'A';
            11: ch := 'B';
            12: ch := 'C';
            13: ch := 'D';
            14: ch := 'E';
            15: ch := 'F'
            end
        else
            ch := chr(ord('0') + digit);
        hexadecimal := ch + hexadecimal;
        decimal := decimal div 16
    end;
end;
 
begin
    write('Decimal: ');
    readln(decimal);
 
    binary := binary_octal(2,decimal);
    octal := binary_octal(8,decimal);
    hexa := hexadecimal(decimal);
    writeln('notation:':10,'2':10,'8':5,'10':5,'16':5);
    writeln('value:':10,binary:10,octal:5,decimal:5,hexa:5);
 
readln
end;
 
procedure manager(var decimal:integer; var binary,octal,hexa:string; notation:byte);
begin
    if notation = 2 then begin
        readln(binary);
        decimal := binary_decimal(binary);
        octal := decimal_octal(decimal);
        hexa := decimal_hexa(decimal)
    end
    else
        if notation = 8 then begin
            readln(octal);
            decimal := octal_decimal(octal);
            binary := decimal_binary(decimal);
            hexa := decimal_hexa(decimal)
        end
        else
            if notation = 10 then begin
                readln(decimal);
                binary := decimal_binary(decimal);
                octal := decimal_octal(decimal);
                hexa := decimal_hexa(decimal)
            end
            else
                if notation = 16 then begin
                    readln(hexa);
                    decimal := hexa_decimal(hexa);
                    binary := decimal_binary(decimal);
                    octal := decimal_octal(decimal)
                end
                else
                    writeln('Must be goto end.');
end;
 
begin
    write('Notation: '); readln(notation);
    write('Number one: ');
    manager(decimal1,binary1,octal1,hexa1,notation);
    write('Number two: ');
    manager(decimal2,binary2,octal2,hexa2,notation);
 
    write('Operation (+,-,*,/): ');
    readln(operation);
    if operation = '+' then
        decimal_res := decimal1 + decimal2
    else
        if operation = '-' then
            decimal_res := decimal1 - decimal2
        else
            if operation = '*' then
                decimal_res := decimal1 * decimal2
            else
                if operation = '/' then
                    decimal_res := decimal1 div decimal2
                else
                    writeln('Error operation');
    binary_res := decimal_binary(decimal_res);
    octal_res := decimal_octal(decimal_res);
    hexa_res := decimal_hexa(decimal_res);
 
    writeln;
    writeln('notation:':10,'2':10,'8':5,'10':5,'16':5);
    writeln;
    writeln('value:':10,binary1:10,octal1:5,decimal1:5,hexa1:5);
    writeln('value:':10,binary2:10,octal2:5,decimal2:5,hexa2:5);
    writeln(' ':10,'-------------------------');
    writeln('result:':10,binary_res:10,octal_res:5,decimal_res:5,hexa_res:5);
 
 
readln
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2011, 22:43
Ответы с готовыми решениями:

Арифметические действия в системах счисления, отличных от десятичной.
А вы случайно не знаете как сделать калькулятор в СС отличной от десятичной. Который будет...

Реализовать арифметические операции в различных системах счисления
uses CRT; const a: string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; {задаём строку для...

Программа-арифмометр, которая складывает, вычитает, умножает, делит в различных системах счисления
Написать программу - арифмометр которая складывает, вычитает, умножает, делит в различных системах...

12
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 22:48
Перевод в различные системы счисления
Если не нужны именно арифметические действия в определённой СС то труда дописать не составит.Переводите в десятичную и делайте всё что нужно а далее преобразование в ту СС в которую нужно.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 22:53  [ТС]
я это видела, спасибо... но тут переводы... а мне нужны + - * / операции...
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 22:56
ну так я и сказал дописать труда не составит.Писать за вас это врядли кто то будет.А так это конечно круто: "ребятки а накатайте ко мне 200-300 строк кода,а я на месте посижу ни чего не делая".
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 22:57  [ТС]
да понимаю я.. а намекнуть можете? просто словами, теоретически
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 23:01
в смысле словами.Там уже написано 95 процентов вашего кода.Такой же выбор case (если вам надо по простому) и перевод в десятичную СС и действие над этими числами (*,+,- и т.д.) и перевод в исходную СС в которой были даны числа.Вот и всё.Попробуйте,подумайте.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 23:03  [ТС]
SuPeR XaKer, спасибо, я все поняла!.. =)
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 23:04
тут выбор операции не case а if толко.
if operation = '+' then
decimal_res := decimal1 + decimal2
else
if operation = '-' then
decimal_res := decimal1 - decimal2
else
if operation = '*' then
decimal_res := decimal1 * decimal2
else
if operation = '/' then
decimal_res := decimal1 div decimal2
else
writeln('Error operation');
С case приблизительно так у вас будет выглядеть (всё зависит как именно надо реализовать операции и сам интерфейс):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Var
 c:char;
begin
write('Ââåäèòå äåéñòâèå: ');
readln(c);
case c of
 '+':ïðèìåíÿåòå ïðîöåäóðû è ôóíêöèè
 (ïðèáëèçèòåëüíî òàê: ðåçóëüòàò:=ôóíêöèÿ äëÿ ïåðåâîäà èç 10-é â ëþáóþ(ôóíêöèÿ
 äëÿ ïåðåâîäà èç ëþáîé â 10-þ(âàøå ÷èñëî)+ôóíêöèÿ äëÿ ïåðåâîäà â 10-þ(âòîðîå âàøå ÷èñëî)))
 '-':òîæå ñàìîå òîê çíàê ñìåíèòü;
 '*':
 '/':
end;
end.
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 23:14  [ТС]
SuPeR XaKer, спасибо огромное за потраченное время) всенепременно благодарна)
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 23:18
пробуйте дописать.вроди работы вам не много осталось.
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 23:21  [ТС]
SuPeR XaKer, обязательно ) надеюсь, получится!
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
03.06.2011, 23:22
задавайте если будут вопросы или ошибки в коде.Кто-то да ответит и исправит.
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 8
03.06.2011, 23:33  [ТС]
SuPeR XaKer, спасибо, обязательно! )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2011, 23:33
Помогаю со студенческими работами здесь

Калькулятор в различных системах счисления
Помогите написать программу, которая будет проводить арифметические операции в различных системах...

Калькулятор для чисел в разных системах счисления
Программа должна осуществлять следующие действия: 1)Ввод исходных чисел с клавиатуры или с файла...

Сравнение двух чисел в разных системах счисления
Прога сравнивает два числа, заданных в разных ссч и выводит, является ли одно число эквивалентом...

Определить, в каких системах счисления с основаниями от 2 до 36 число не содержит одинаковых цифр
Требуется написать программу, определяющую, в каких системах счисления с основаниями от 2 до 36 это...

Вывести на экран в виде таблицы значения чисел из интервала от A до B с шагом C в системах счисления с основаниями 13, 10, 8, 14
Работа по системам счисления. Вывести на экран в виде таблицы значения чисел из интервала от A до...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru