Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/64: Рейтинг темы: голосов - 64, средняя оценка - 4.89
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305

Системы счисления

22.05.2011, 13:34. Показов 12685. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите кто нить реализовать такую программу:
Реализовать в виде класса набор подпрограмм для выполнения следующих операций над натуральными числами в Р-ичной системе счисления (1 < Р< 10):
+ сложениe;
+ вычитаниe;
+ умножениe;
+ делениe;
+ перевод из десятичной системы счисления в Р-ичную;
+ перевод из Р-ичной системы счисления в десятичную;
+ проверкa правильности записи числа в Р-ичной системе счисления;
+ отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше.
Может у кого - нибудь уже есть исходники подобные, поделитесь))) Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2011, 13:34
Ответы с готовыми решениями:

Как перевести число с 16 системы счисления в 2 систему счисления (программа)
Как перевести число с 16 системы счисления в 2 систему счисления ? (программа).

Задачка на системы счисления
Нужно написать 2 метода: первый переводит число в диапазоне от 1 до 100 вкл. из десятичной системы счисления в римскую (эти символы лежать...

Системы счисления чисел
Перевести положительное число в 13 систему и вывести на экран.

66
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
23.05.2011, 10:20
Число - оно и есть число, а посему
Цитата Сообщение от robert19 Посмотреть сообщение
+ сложениe;
+ вычитаниe;
+ умножениe;
+ делениe;
+ отношения (равно, не равно, больше или равно, меньше или равно, больше, меньше.
не имеет никакого отношения к системе счисления. Для остального есть стандартные методы, описанные в документациии.
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
23.05.2011, 12:31  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
Число - оно и есть число, а посему

не имеет никакого отношения к системе счисления. Для остального есть стандартные методы, описанные в документациии.
Да мне хотя бы четко разобрать задание, что да как.
Я как понял, по заданию ведь сначала нужно указать систему счисления в какой работать нужно, а потом над этими числа (переведенные в эту систему) нужно выполнять эти операции. Я правильно понял?
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
23.05.2011, 16:14
Это ты у нас спрашиваешь ? На форуме ?
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
23.05.2011, 18:03  [ТС]
Цитата Сообщение от Золотце Посмотреть сообщение
Это ты у нас спрашиваешь ? На форуме ?
Ну как бы. Хочу разобраться в задании. Если есть у кого какие нибудь мысли, помогите

Добавлено через 1 час 28 минут
Помогите, оч надо(((
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
23.05.2011, 18:57
Блин.
Программ таких нету, можно написать. Как уже сказали можно хранить число в 10тичном виде
1
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
23.05.2011, 19:04
можно выполнять действия (+-*\) с decimal, а позже делать конвертирование
тут надо учесть и случаи, когда p>10
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
23.05.2011, 19:08  [ТС]
Цитата Сообщение от Daemon025 Посмотреть сообщение
можно выполнять действия (+-*\) с decimal, а позже делать конвертирование
тут надо учесть и случаи, когда p>10
Ну сначала ведь нужно число перевести в P-ичную СС. А потом выполнять операции.
Почему ругается на код:
Java
1
2
3
4
5
6
7
int ch = 433;int []rez=null;int i=0;
        while(true){
            if(ch<2) break;
            rez[i] = (ch%2);//выдает ошибку
            ch = ch/2;
            i++;
        }
0
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
23.05.2011, 19:30
неизвестен размер массива быстрее всего
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
23.05.2011, 19:33  [ТС]
Цитата Сообщение от Daemon025 Посмотреть сообщение
неизвестен размер массива быстрее всего
Нет. если написать:
Java
1
int res = ch%2;
тоже ошибка будет
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
23.05.2011, 21:10
Цитата Сообщение от Daemon025 Посмотреть сообщение
тут надо учесть и случаи, когда p>10
Цитата Сообщение от robert19 Посмотреть сообщение
Р-ичной системе счисления (1 < Р< 10
Вам надо реализовывать это все честно или можно таки хранить в виде 10тичной записи?
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
24.05.2011, 13:47  [ТС]
Цитата Сообщение от Золотце Посмотреть сообщение
Вам надо реализовывать это все честно или можно таки хранить в виде 10тичной записи?
Думаю нужно все честно реализовать. потому что экзамен от этого зависит, а препод придирчивый(((

Добавлено через 1 минуту
Так вроде работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void ofDic(){
        int i=76; int j=0; int p=2;
        //i-это исходное число,
        //j- то что получиться,
        //P-система счисления
        int flag=1;
        while(true){
            if(i<p){
                j=j+(i-((int)(i/p))*p)*flag; break;
            }
            j=j+(i-((int)(i/p))*p)*flag;
            i=i/p;
            flag=flag*10;
        }
        System.out.println(j);
    }
Добавлено через 1 минуту
Я думаю будет правильно, если к примеру что бы перевести из 2-ичной СС в 8-ную, к примеру, можно сначала перевести в 10-ную, а потом из 10-чной в 8-ную?

Добавлено через 15 часов 50 минут
Вот написал код перевода в 10 СС:
Java
1
2
3
4
5
6
7
8
9
10
public static void toDic(){
        int []mass = {1,2,1};
        int rez = 0;
        int j=0;
        for(int i=mass.length-1;i>=0;i--){
            rez += (int) (mass[j] * (Math.pow(3,i)));
            j++;
        }
        System.out.println(rez);
    }
Это конкретный пример.
Как его модифицировать для общего случая?
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
24.05.2011, 14:49
Поскольку вы единственный из встреченных мною здесь студентов которые пытаются что то сделать само то я вам помогу.

Добавлено через 5 минут
Первое toDic надо назвать ToDec

Добавлено через 23 минуты
http://algolist.manual.ru/math... nt_sys.php
вот статья неплохая

Добавлено через 3 минуты
операции делать надо надеюсь на том же основании что и числа? Следующий вопрос: деление, кого на что делить?
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
24.05.2011, 15:04  [ТС]
Цитата Сообщение от Золотце Посмотреть сообщение
операции делать надо надеюсь на том же основании что и числа?
Скорее всего да. Про деление, это как я понимаю 2 числа вводимые с консоли. Их преобразовать в Р СС и выполнять все эти действия.

Добавлено через 2 минуты
Цитата Сообщение от Золотце Посмотреть сообщение

Добавлено через 23 минуты
http://algolist.manual.ru/math... nt_sys.php
вот статья неплохая
Я уже читал эту статью и вот как бы попытался по ней написать. Только пока получилось для конкретного примера. Хотелось бы в общем случае
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
24.05.2011, 15:31
Вот класс
Java
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
import static java.lang.Math.*;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class NumeralSystem {
    private Integer[] chars;
    private int radix;
 
    public NumeralSystem(int value, int radix) {
        this.radix = radix;
        chars = transformFrom(value, radix);
    }
 
    protected Integer[] transformFrom(int from, int radix) {
        List<Integer> resultList = new ArrayList<Integer>();
        while (from != 0) {
            resultList.add(from % radix);
            from /= radix;
        }
        Collections.reverse(resultList);
        return resultList.toArray(new Integer[0]);
    }
 
    public int produceDecValue() {
        int result = 0;
        int tempvalue = 1;
        for (int i = chars.length - 1; i >= 0; i--) {
            result += chars[i] * tempvalue;
            tempvalue *= radix;
        }
        return result;
    }
 
}
Вот юнит тесты:
Java
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
import org.junit.Before;
import org.junit.Test;
 
import static org.junit.Assert.*;
 
public class NumeralSystemTest {
    NumeralSystem underTest;
    
    @Test
    public void shouldConvert()
    {
        underTest=new NumeralSystem(11, 2);
        Integer[] result=underTest.transformFrom(11, 8);
        Integer[] exptected=new Integer[]{1,3};
        assertArrayEquals(exptected, result);
        
    }
    
    @Test
    public void shouldDisplayCorrectValueForDec()
    {
        underTest=new NumeralSystem(11, 8);
        int result=underTest.produceDecValue();
        int expected=11;
        assertEquals(expected, result);
    }
    
}
Добавлено через 9 минут
Цитата Сообщение от robert19 Посмотреть сообщение
проверкa правильности записи числа в Р-ичной системе счисления;
Думаю это вы сделаете сами

Добавлено через 1 минуту
сложение и вычитание тоже сделаете саи

Добавлено через 8 минут
Еще вопрос: деление должно происходить как ? Остаток нужен или только целочисленный результат?
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
24.05.2011, 15:45  [ТС]
Цитата Сообщение от Золотце Посмотреть сообщение
Еще вопрос: деление должно происходить как ? Остаток нужен или только целочисленный результат?
Если в задании не сказано про остаток, то скорее всего не нужно. Спасибо огромное за помощь)))
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
24.05.2011, 15:50
Еще ничего не сделано.
Как я сказал проверку на валидность, сложние и вычитание надеюсь сделаете сами?
0
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
24.05.2011, 15:54  [ТС]
Цитата Сообщение от Золотце Посмотреть сообщение
Еще ничего не сделано.
Как я сказал проверку на валидность, сложние и вычитание надеюсь сделаете сами?
Постараюсь))
0
142 / 105 / 16
Регистрация: 21.04.2011
Сообщений: 402
24.05.2011, 16:48
класс
Java
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
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
public class NumeralSystem implements Comparable<NumeralSystem> {
    private final Integer[] chars;
    private final int radix;
 
    public NumeralSystem(int value, int radix) {
        this.radix = radix;
        chars = transformFrom(value, radix);
    }
 
    protected NumeralSystem(Integer[] chars, int radix) {
        this.chars = chars;
        this.radix = radix;
    }
 
    protected Integer[] transformFrom(int from, int radix) {
        List<Integer> resultList = new ArrayList<Integer>();
        while (from != 0) {
            resultList.add(from % radix);
            from /= radix;
        }
        Collections.reverse(resultList);
        return resultList.toArray(new Integer[0]);
    }
 
    public int produceDecValue() {
        int result = 0;
        int tempvalue = 1;
        for (int i = chars.length - 1; i >= 0; i--) {
            result += chars[i] * tempvalue;
            tempvalue *= radix;
        }
        return result;
    }
 
    public int getRadix() {
        return radix;
    }
 
    protected int compareBytes(Integer[] first, Integer[] second) {
        int result = Integer.valueOf(first.length).compareTo(second.length);
        if (result != 0)
            return result;
        for (int i = first.length - 1; i >= 0; i--) {
            result = first[i].compareTo(second[i]);
            if (result != 0)
                return result;
        }
        return 0;
    }
 
    private boolean validRadix(int radix) {
        return (this.radix == radix);
 
    }
 
    public NumeralSystem division(NumeralSystem anotherValue) {
        if (!validRadix(anotherValue.radix))
            throw new IllegalArgumentException("incorrect radix of devisior");
 
        return null;
    }
 
    public NumeralSystem multiply(NumeralSystem anotherValue) {
        if (!validRadix(anotherValue.radix))
            throw new IllegalArgumentException("incorrect radix of devisior");
 
        return null;
    }
 
    protected Integer[] multiplyBytes(Integer first[], Integer[] second) {
        return null;
    }
 
    protected Integer[] multiplyBytes(Integer[] first, Integer one, Integer shift) {
        return null;
    }
 
    public NumeralSystem add(NumeralSystem anotherValue) {
        if (!validRadix(anotherValue.radix))
            throw new IllegalArgumentException("incorrect radix of comparable");
        return null;
    }
 
    public Integer[] addIntegers(Integer[] first, Integer[] second) {
        return null;
    }
 
    @Override
    public int compareTo(NumeralSystem anotherValue) {
        if (!validRadix(anotherValue.radix))
            throw new IllegalArgumentException("incorrect radix of comparable");
        return compareBytes(chars, anotherValue.chars);
    }
 
}
юнит тесты:
Java
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
import org.junit.Before;
import org.junit.Test;
 
import static org.junit.Assert.*;
 
public class NumeralSystemTest {
    NumeralSystem underTest;
 
    @Test
    public void shouldConvert() {
        underTest = new NumeralSystem(11, 2);
        Integer[] result = underTest.transformFrom(11, 8);
        Integer[] exptected = new Integer[] { 1, 3 };
        assertArrayEquals(exptected, result);
 
    }
 
    @Test
    public void shouldDisplayCorrectValueForDec() {
        underTest = new NumeralSystem(11, 8);
        int result = underTest.produceDecValue();
        int expected = 11;
        assertEquals(expected, result);
    }
 
    @Test
    public void shouldCompare() {
        underTest = new NumeralSystem(123, 8);
        NumeralSystem secondArg = new NumeralSystem(256, 8);
        int result = underTest.compareTo(secondArg);
        int expected = 1;
        assertEquals(expected, result);
 
        secondArg = new NumeralSystem(124, 8);
        result = underTest.compareTo(secondArg);
        expected = -1;
 
        assertEquals(expected, result);
 
        secondArg = new NumeralSystem(123, 8);
        result = underTest.compareTo(secondArg);
        expected = 0;
        assertEquals(expected, result);
 
    }
    
    @Test(expected=IllegalArgumentException.class)
    public void  shouldThrowOnCompareIncorrectRadix()
    {
        underTest = new NumeralSystem(11, 8);
        NumeralSystem secondArg = new NumeralSystem(256, 7);
        underTest.compareTo(secondArg);
    }
}
Добавлено через 31 секунду
Вам надо реализовать методы add и addIntegers
1
29 / 29 / 7
Регистрация: 26.03.2010
Сообщений: 305
24.05.2011, 16:51  [ТС]
Спасибо еще раз. Щас будем разбираться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2011, 16:51
Помогаю со студенческими работами здесь

Перевод из 10 системы счисления в произвольную и наоборот
Помню на яве были функции для перевода числа из 10 системы счисления в произвольную(указанную) и наоборот.(Те что в одну строку)....

Почему зависает перевод системы счисления
Привет, делаю программу для перевода систем счисления, на C++ работает нормально, но на Java нет, подскажите как исправить? Код на ...

Перевести число в различные системы счисления
помогите пожалуйста с программой: Вводится число в 8-ричной системе счисления. Вывести значение этого числа в 16-ричной, 2ичной, 10-ричной...

Перевод чисел из 10 системы счисления в восьмеричную без использования string
Нужно перевести 4-значное число (1000-9999) из 10 в 8 систему.Как путем деления перевести двузначные числа я понимаю,но тут я имею дело с...

Программа для перевода из 10-чной системы счисления в другую любую
Здравствуйте всем, написал программу в eclipse Java Form и столкнулся с такой проблемой, при переводе числа 65536 из 10-ной системы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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