Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 21

Умножение,слложение и вычитание чисел с разными системами счисления

24.01.2011, 07:29. Показов 6546. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даются два числа в разных системах счисленния,с ними надо выполнить сложение,вычитание и умножение. Числа должны быть дробными. Помогите пожалуйста...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2011, 07:29
Ответы с готовыми решениями:

Доработка инженерного калькулятора (работа с разными системами счисления)
Здравствуйте! Требуется сделать программу "инженерный калькулятор". Сначала думал что все просто (но не обратил внимания, что он должен...

Даны числа в 16-ричной системе счисления: сложение, вычитание, умножение, деление, логическое отрицание
1 Даны числа а=9531h и b=A78Dh (числа в 16-ричном системе счисления). Нужно выполнить над ними: сложение, вычитание, умножение, деление,...

Преобразование чисел между 2/8/16 системами счисления
Пишу код, который переводит любое натуральное число в 2-ную,8-ную,16-ную системы счисления. Для 2-ной написала функцию, похожие функции...

7
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
24.01.2011, 07:48
Самое простое переводите в десятичную и выполняйте все операции.
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 21
24.01.2011, 08:05  [ТС]
У меня проблема с дробными числами, с целыми получается,а дробные неправильно переводит и складывает
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
24.01.2011, 08:09
посмотри на википедии.Перевод из любой СС в 10-ю.Там есть алгоритм.Написать программу 20-мин работы
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 21
24.01.2011, 08:26  [ТС]
Так вот у меня есть готовый алгоритм, но он почему то не может правильно считать дробные числа.

Добавлено через 3 минуты
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
program n33;
uses wincrt;
var
  s,s2,q: string;
  i,j,b,a,a2: integer;
  d,d2,k,k2,sum,z,g: real;
  f,f2,e,e2: boolean;
  c,c2: char;
begin
  b:=2;
    s:='10.101';
    f:=false;
    k:=1;
    for i:=1 to Length(s) do begin
      if f then k:=k/b;
      c:=UpCase(s[i]);
      a:=-1;
      case c of
        '0'..'9': a:=Ord(c)-48;
        'A'..'Z': a:=Ord(c)-55;
        '.',',': if f then e:=true else f:=true;
        else f:=true;
      end;
      e:=e or (a>=b);
 
      if a>=0 then d:=d*b+a;
    end;
      begin
    s2:='11.1001';
    f2:=false;
    k2:=1;
    for i:=1 to Length(s2) do begin
      if f2 then k2:=k2/b;
      c2:=UpCase(s2[i]);
      a2:=-1;
      case c2 of
        '0'..'9': a2:=Ord(c2)-48;
        'A'..'Z': a2:=Ord(c2)-55;
        '.',',': if f2 then e2:=true else f2:=true;
        else f2:=true;
      end;
      e2:=e2 or (a2>=b);
 
      if a2>=0 then d2:=d2*b+a2;
       end;
       sum:=d*k+d2*k2;
 
       z:=frac(sum);
    sum:=sum-z;
    q:='';
    while sum>0 do begin
      g:=sum/b;
      j:=Round(Frac(g)*b);
      if j<10 then j:=j+48 else j:=i+55;
      q:=Chr(j)+q;
      sum:=g-Frac(g)
    end;
    if z>0 then begin
      q:=q+'.';
      while z>0 do begin
        g:=z*b;
        i:=Trunc(g);
        z:=g-j;
        if j<10 then j:=j+48 else j:=j+55;
        q:=q+Chr(j)
      end
    end;
    if q='' then q:='0';
    WriteLn('Сумма двух чисел ',s,' и ',s2,' в двоичной системе счисления равна: ',q);
 end;
end.
0
 Аватар для SuPeR XaKer
2857 / 1986 / 788
Регистрация: 23.09.2010
Сообщений: 4,876
24.01.2011, 10:56
kott
так перевод в 10-сс разрешается?
0
1 / 1 / 0
Регистрация: 28.01.2010
Сообщений: 21
02.02.2011, 12:39  [ТС]
Да можно.
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.02.2011, 13:39
Kott, принцип такой - представления чисел в различных системах счисления надо перевести в сами числа (само по себе число не принадлежит ни одной из систем счисления). Потом выполнить над ними вычисления и показать результат, например, в десятичной системе счисления. - Перевод числа в десятичную систему счисления в процедуре Writeln() выполняется автоматически.
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
program Project1;
 
type
  (*Тип, задающий диапазон возможных оснований систем счисления.*)
  TBase = 2..16;
  (*Тип, задающий диапазон возможных значений цифр.*)
  TDigitNum = 0..15;
 
(*Возвращает число, соответствующее цифре.*)
function DigToNum(const aDigit : Char; const aBase : TBase) : TDigitNum;
var
  Res : TDigitNum;
  SBase : String;
begin
  case aDigit of
    '0' : Res := 0;
    '1' : Res := 1;
    '2' : Res := 2;
    '3' : Res := 3;
    '4' : Res := 4;
    '5' : Res := 5;
    '6' : Res := 6;
    '7' : Res := 7;
    '8' : Res := 8;
    '9' : Res := 9;
    'A', 'a' : Res := 10;
    'B', 'b' : Res := 11;
    'C', 'c' : Res := 12;
    'D', 'd' : Res := 13;
    'E', 'e' : Res := 14;
    'F', 'f' : Res := 15;
  else
    Writeln('Ошибка! Нет такой цифры: "' + aDigit + '".');
    Res := 0;
  end;
 
  if Res >= aBase then begin
    Str(aBase, SBase);
    Writeln(
      'Ошибка! Нет цифры "' + aDigit + '"'
      + ' в системе счисления по основанию ' + SBase
    );
    Res := 0;
  end;
 
  DigToNum := Res;
end;
 
(*Определяет само число по записи этого числа в системе счисления по основанию aBase.*)
function StrToNum(const aStr : String; const aBase : TBase) : Extended;
var
  i, Pos1, Sign : Integer;
  Res, Weight : Extended;
  StrNum : String;
begin
  StrToNum := 0;
  Res := 0;
 
  //Определяем знак "+" или "-".
  Sign := 1;
  if aStr[1] = '-' then Sign := -1;
 
  //Запись числа без знака.
  if Sign = -1 then StrNum := Copy(aStr, 2, Length(aStr) - 1)
  else StrNum := aStr;
 
  //Ищем десятичную точку.
  for Pos1 := 1 to Length(StrNum) do
    if StrNum[Pos1] in ['.', ','] then Break
  ;
  if Pos1 = Length(StrNum) then begin
    Writeln('Ошибка! Неверная запись числа.');
    Exit;
  end;
 
  //Учитываем в числе дробную часть, если она присутствует.
  if Pos1 < Length(StrNum) then begin
    Weight := 1;
    for i := Pos1 + 1 to Length(StrNum) do begin
      Weight := Weight / aBase;
      Res := Res + DigToNum(StrNum[i], aBase) * Weight;
    end;
  end;
 
  //Учитываем в числе целую часть.
  Weight := 1;
  for i := Pos1 - 1 downto 1 do begin
    Res := Res + DigToNum(StrNum[i], aBase) * Weight;
    Weight := Weight * aBase;
  end;
 
  //Учитываем знак числа.
  StrToNum := Res * Sign;
end;
 
var
  SNum1, SNum2 : String;
  B1, B2 : TBase;
  Num1, Num2, Res : Extended;
begin
  repeat
    Writeln('Задайте основание системы счисления для представления первого числа:');
    Readln(B1);
    Writeln('Задайте первое число в системе счисления по основанию ', B1, ':');
    Readln(SNum1);
 
    Writeln('Задайте основание системы счисления для представления второго числа:');
    Readln(B2);
    Writeln('Задайте второе число в системе счисления по основанию ', B2, ':');
    Readln(SNum2);
 
    Num1 := StrToNum(SNum1, B1);
    Num2 := StrToNum(SNum2, B2);
    Res := Num1 + Num2;
 
    Writeln('Сумма чисел, представленная в десятичной системе счисления, равна:');
    Writeln(Res:0:20);
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(SNum1);
  until SNum1 <> '';
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2011, 13:39
Помогаю со студенческими работами здесь

Перевод чисел между системами счисления в Делфи
Помогите написать программу которая переводит вещественные числа из десятичной в любую другую систему счисления с основанием от 2 до 16....

Перевод чисел между различными системами счисления
о Делфи: нужно создать кнопки: для перевода чисел из восьмеричной системы счисления в десятичную, шестнадцатеричную, и двоичную. Из...

Перевод чисел между Фибоначчиевой и десятичной системами счисления
Ребят - выручайте) - надо написать программу В понедельник надо курсовую сдавать, а я даже понятия не имею, как такую программу написать:...

Реализовать перевод чисел между десятичной, двоичной и восьмеричной системами счисления.
Реализовать перевод чисел между десятичной, двоичной и восьмеричной системами счисления. using System; class Program { ...

Перевод записей чисел между различными системами счисления. Нужно добавить комментарии.
Очень нужно защитить программу.Практика горит.Нужно пошаговое объяснение этой программы. Спасайте unit uMain; interface uses ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru