Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
1

Сложение двух чисел в 6-ой системе счисления

14.02.2015, 17:03. Показов 1917. Ответов 15
Метки нет (Все метки)

Добрый день! Не могли бы вы мне помочь написать функцию, выполняющую сложение двух чисел в 6-ой системе счисления?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2015, 17:03
Ответы с готовыми решениями:

Выполнить сложение чисел в двоичной системе счисления с ограничением
Разработать в TurboPascal программу, выполняющую сложение чисел в 2-ой системе счисления с...

Написать процедуру, позволяющую выполнять сложение чисел в одной и той же системе счисления
Дано два числа X и Y в системе счисления с основанием P (2<=P<=9). Написать процедуру, позволяющую...

Сложение чисел в системе счисления с основанием P
Вводятся два натуральных числа N1 u N2, а также число P (1<P<10). Считаем, что N1 u N2 - это числа...

Сложение чисел в 2-ой системе счисления (переменные типа string)
Народ, помогите с лабой. Буду очень признателен:) 1. Разработать программу, выполняющую сложение...

15
1645 / 1074 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
14.02.2015, 17:06 2
Цитата Сообщение от picabu Посмотреть сообщение
в 6-ой системе счисления
Может в 16?
0
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
14.02.2015, 17:07  [ТС] 3
нет, именно в 6-ой)
0
Почетный модератор
64085 / 47494 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
14.02.2015, 17:14 4
Например так.
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
uses crt;
var s1,s2:string;
    a,b,c:array[byte] of 0..5;
    n,m,i,j,p:byte;
    k:integer;
begin
clrscr;
repeat
p:=0;
write('Введите число A в СС 6:');
readln(s1);
i:=1;
while(i<=length(s1))and(p=0) do
if not(s1[i] in ['0'..'5']) then p:=1
else i:=i+1;
until p=0;
repeat
p:=0;
write('Введите число B в СС 6:');
readln(s2);
i:=1;
while(i<=length(s2))and(p=0) do
if not(s2[i] in ['0'..'5']) then p:=1
else i:=i+1;
until p=0;
if length(s1)<length(s2) then
while length(s1)<length(s2) do
s1:='0'+s1
else if length(s1)>length(s2) then
while length(s2)<length(s1) do
s2:='0'+s2;
writeln('  ',s1);
writeln(' +');
writeln('  ',s2);
for i:=1 to length(s1)+2 do
write('-');
writeln;
n:=length(s1);
m:=n;
for i:=1 to n do
 begin
  val(s1[i],a[i],k);
  val(s2[i],b[i],k);
 end;
p:=0;
for i:=n downto 1 do
  begin
   c[i]:=a[i]+b[i]+p;
   if (c[i]>5)and(i>1) then
      begin
       c[i]:=c[i] mod 6;
       p:=1;
      end
    else p:=0;
  end;
if c[1]>5 then
  begin
    c[1]:=c[1] mod 6;
    n:=n+1;
    for j:=n downto 2 do
    c[j]:=c[j-1];
    c[1]:=1;
  end;
if n=m then write('  ')
else write(' ');
for i:=1 to n do
write(c[i]);
readln
end.
1
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
14.02.2015, 17:15  [ТС] 5
также должна быть обеспечена возможность сложения двух дробных чисел, например 14,24 и 13.54
0
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
16.02.2015, 13:59  [ТС] 6
Скажите, пожалуйста, а что значит, если выводит ошибку: "Нет перегруженной подпрограммы с такими типами параметров" вот в этой строке val(s1[i],a[i],k);
0
1645 / 1074 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
16.02.2015, 14:10 7
VAL - это зарезервированное имя процедуры

Добавлено через 1 минуту
...
Val (процедура)

Преобразовывает строковое значение в его числовое представление.

Объявление:
Procedure Val(S; Var V; Var Code : Integer);

Где:
S - переменная со строковым типом. Должна представлять
последовательность символов, формирующих знаковое целое число.
V - переменная типа Real или Integer
Code - переменная типа Integer

Замечания:
Преобразовывает строковое значение (S) в его числовое представление, как это
происходит при чтении из текстового файла с помощью Read. Code - позиция, в
которой произошла ошибка при преобразовании, или нуль, если ошибки не было.
Добавлено через 25 секунд
Проверьте соответствие типам.

Добавлено через 2 минуты
a[i] и b[i] не соответствуют типу Integer
1
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
16.02.2015, 14:24  [ТС] 8
а существует ли какая-нибудь функция, которая может преобразовать строку в массив чисел?)
0
1645 / 1074 / 1081
Регистрация: 03.07.2013
Сообщений: 4,507
16.02.2015, 14:27 9
picabu, можешь сам такую написать. В стандартных средствах этого нет.
0
Почетный модератор
64085 / 47494 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
16.02.2015, 14:39 10
Цитата Сообщение от picabu Посмотреть сообщение
вот в этой строке val(s1[i],a[i],k);
Это написано для Турбо Паскаль, как и называется раздел.
Если пишете в АВС, то так
Pascal
1
2
3
4
5
6
7
var a,b,c:array[byte] of byte;
................................................
for i:=1 to n do
 begin
  a[i]:=strtoint(s1[i]);
  b[i]:=strtoint(s2[i]);
 end;
Добавлено через 5 минут
Кстати строку
Pascal
1
var a,b,c:array[byte] of byte;
и в Турбо Паскале нужно исправить, просто код писался при отключенном Range Error
1
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
16.02.2015, 14:54  [ТС] 11
Спасибо за ответ) а если мне нужно осуществить сложение дробных чисел? Был вариант разбить число на целую и дробную часть и сложить каждую из них отдельно (функцию разделения целой и дробной части я написала, т.к. она все равно должна использоваться в итоговой программе), но что делать, если будут, например, числа 12.42 и 2.20? ведь программа посчитает как 14.102 вместо 15.02. Может быть у Вас есть какие-нибудь мысли по этому поводу?)
0
Почетный модератор
64085 / 47494 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
16.02.2015, 15:04 12
Ну я думаю что если при сложении дробных частей первая цифра будет больше 5, то к целой части нужно прибавить 1 в СС 6.
0
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
16.02.2015, 15:06  [ТС] 13
а вот если так попытаться
пусть s3 и m3 - дробные части чисел
пусть s2 и m2 - целые части чисел
если сначала написать функцию, которую Вы написали выше для дробных частей, и пусть в итоге получится массив x[i] затем нужно сравнить его длину с длиной строк s3 и m3, и если окажется, что его длина больше, то к целой части нужно прибавить 1
0
Почетный модератор
64085 / 47494 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
16.02.2015, 15:08 14
Нужно посмотреть, ведь мы изменяли длины строк перед сложением.
0
1 / 1 / 0
Регистрация: 05.10.2014
Сообщений: 95
16.02.2015, 15:14  [ТС] 15
Мы получается как раз их сделали равными же. т. е length(s3)=length(m3)
только тогда, наверное, нужно вот так сделать применительно для дробной части, т.е дополнить нулями с конца, а не с начала?
Pascal
1
2
3
4
5
6
if length(s3)<length(m3) then
while length(s3)<length(m3) do
s3:=s3+'0'
else if length(s3)>length(m3) then
while length(m3)<length(s3) do
m3:=m3+'0';
0
Почетный модератор
64085 / 47494 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
16.02.2015, 15:17 16
Честно голова сейчас не варит, думайте сами...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2015, 15:17

Сложение двух чисел в двоичной системе счисления
Здравствуйте. Правильно ли я сложил 2 числа в двоичной системе счисления? Руководствовался...

Сложение двух чисел, записанных в семеричной системе счисления
Помогите пожалуйста с этими задачами 1)Некоторое устройство позволяет хранить четырёхразрядные...

Сложение двух чисел в Двоично-десятичной системе счисления
Доброго времени суток, может есть ли у кого уже готовый код? или же можете носом ткнуть на ссылку,...

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


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

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

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