Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/60: Рейтинг темы: голосов - 60, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 12.12.2010
Сообщений: 18

Перевод из двоичной системы счисления в восьмеричную

12.12.2010, 17:31. Показов 11077. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. подскажу плиз как в qbasic написать программу перевода из двоичной сс в восьмиричную .......очень нада))
2. из восьмиричной обратно в двоичную)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2010, 17:31
Ответы с готовыми решениями:

Перевод числел из двоичной системы счисления в десятичную и восьмеричную
Задание: написать программу которая переводит числа из двоичной системы счисления в десятичную и восьмеричную. Программа: DIM X, Y,...

Перевод числа из двоичной системы счисления в десятичную
Составить программу, осуществляющую перевод числа из двоичной системы счисления в десятичную

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

36
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
23.12.2010, 21:12
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
P.S. Кстати виндовый калькулятор этого не умеет)))
стандартным редко пользуюсь, почти все вычисления на телефоне. перевод в сс там есть, правда только в основные. собственно программу тестировал сравнивая с результатами перевода на телефоне.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
27.02.2011, 17:56
немного переделал программу
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
CLS
DEFDBL A-Z
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q: INPUT "vvedite p"; p
FOR i = 1 TO LEN(a$)
    IF MID$(a$, i, 1) <> "." THEN b$ = b$ + MID$(a$, i, 1) ELSE r = i - LEN(a$)
NEXT
DIM c(LEN(b$)): u$ = "0123456789ABCDEF": m = 1E6
FOR i = 1 TO LEN(b$): FOR j = 1 TO LEN(u$)
        IF UCASE$(MID$(b$, i, 1)) = MID$(u$, j, 1) THEN c(i) = j - 1
NEXT: NEXT
FOR i = LEN(b$) TO 1 STEP -1
    IF r >= 0 THEN z = z + c(i) * q ^ r ELSE d = d + c(i) * q ^ r * m
    r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
DO
    l = l + 1: d = d * p
    f$ = f$ + MID$(u$, INT(d / m) + 1, 1): d = d - INT(d / m) * m
LOOP UNTIL d = 0 OR l = 10
PRINT STRING$(80, 196); c$ + "." + f$
2
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
27.02.2011, 18:36
softmob, вери гуд! А ты её хорошо по дробным числам тестировал?
1
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 4
27.02.2011, 19:46
спасибо вам ребята за прогу, оч помогла.. но хотелось бы узнать..можно ли дописать ее, чтобы при вводе числа равного системе счисления, она бы запрещала выполнение, выдавая ошибку..?

препод ругается, мол не должно быть так, хоть и в итоге вычисляет правильно..
заранее благодарен
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
27.02.2011, 20:04
Цитата Сообщение от kensaku Посмотреть сообщение
спасибо вам ребята за прогу, оч помогла.. но хотелось бы узнать..можно ли дописать ее, чтобы при вводе числа равного системе счисления, она бы запрещала выполнение, выдавая ошибку..?

препод ругается, мол не должно быть так, хоть и в итоге вычисляет правильно..
заранее благодарен
в смысле когда q=p или когда введенное число не является числом данной сс

Добавлено через 4 минуты
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
А ты её хорошо по дробным числам тестировал?
да, программа работает вполне нормально. хотя в переменной дробной части все равно накапливается погрешность, но тут уже дело не в самой программе.
1
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 4
27.02.2011, 20:08
..когда введенное число не является числом данной сс
т.е. 5 в 5-ой системе...)
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
27.02.2011, 20:09
Цитата Сообщение от kensaku Посмотреть сообщение
..когда введенное число не является числом данной сс
т.е. 5 в 5-ой системе...)
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CLS
DEFDBL A-Z
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q: INPUT "vvedite p"; p
FOR i = 1 TO LEN(a$)
    IF MID$(a$, i, 1) <> "." THEN b$ = b$ + MID$(a$, i, 1) ELSE r = i - LEN(a$)
NEXT
DIM c(LEN(b$)): u$ = "0123456789ABCDEF": m = 1E6
FOR i = 1 TO LEN(b$): FOR j = 1 TO LEN(u$)
        IF UCASE$(MID$(b$, i, 1)) = MID$(u$, j, 1) THEN c(i) = j - 1
        IF c(i) >= q THEN PRINT "oshibka: chislo ne sootvetstvuet ss": END
NEXT: NEXT
FOR i = LEN(b$) TO 1 STEP -1
    IF r >= 0 THEN z = z + c(i) * q ^ r ELSE d = d + c(i) * q ^ r * m
    r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
DO
    l = l + 1: d = d * p
    f$ = f$ + MID$(u$, INT(d / m) + 1, 1): d = d - INT(d / m) * m
LOOP UNTIL d = 0 OR l = 10
PRINT STRING$(80, 196); c$ + "." + f$
1
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 4
27.02.2011, 20:13
мысль моя понята, но вот хотелось бы, чтобы вывод ошибки следовал сразу после ввода q...
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
27.02.2011, 20:16
Цитата Сообщение от kensaku Посмотреть сообщение
мысль моя понята, но вот хотелось бы, чтобы вывод ошибки следовал сразу после ввода q...
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CLS
DEFDBL A-Z
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q
FOR i = 1 TO LEN(a$)
    IF MID$(a$, i, 1) <> "." THEN b$ = b$ + MID$(a$, i, 1) ELSE r = i - LEN(a$)
NEXT
DIM c(LEN(b$)): u$ = "0123456789ABCDEF": m = 1E6
FOR i = 1 TO LEN(b$): FOR j = 1 TO LEN(u$)
        IF UCASE$(MID$(b$, i, 1)) = MID$(u$, j, 1) THEN c(i) = j - 1
        IF c(i) >= q THEN PRINT "oshibka: chislo ne sootvetstvuet ss": END
NEXT: NEXT
INPUT "vvedite p"; p
FOR i = LEN(b$) TO 1 STEP -1
    IF r >= 0 THEN z = z + c(i) * q ^ r ELSE d = d + c(i) * q ^ r * m
    r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
DO
    l = l + 1: d = d * p
    f$ = f$ + MID$(u$, INT(d / m) + 1, 1): d = d - INT(d / m) * m
LOOP UNTIL d = 0 OR l = 10
PRINT STRING$(80, 196); c$ + "." + f$
1
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 4
27.02.2011, 20:21
оо, супер, благодарю) с меня пиво если увидимся))
просто проблемы именно с васиком у меня)
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
06.03.2011, 15:50
еще не надоел с доработкой данной программы?
получилось избавится от появляющейся погрешности перевода дробной части.
и немного сократил саму программу.
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CLS
DEFDBL A-Z
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q: INPUT "vvedite p"; p
u$ = "0123456789ABCDEF": k = INSTR(a$, "."): r = (LEN(a$) - k) * (k <> 0)
a$ = MID$(a$, 1, k - 1) + MID$(a$, k + 1, LEN(a$) - k)
FOR i = LEN(a$) TO 1 STEP -1: j = INSTR(u$, UCASE$(MID$(a$, i, 1))) - 1
    IF r >= 0 THEN z = z + j * q ^ r ELSE d = d + j * q ^ r
    r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
DO
    l = l + 1: d = VAL(STR$(d)) * p
    f$ = f$ + MID$(u$, INT(d) + 1, 1): d$ = STR$(d)
    d = VAL(RIGHT$(d$, LEN(d$) - INSTR(d$, ".") + 1))
LOOP UNTIL INSTR(d$, ".") = 0 OR l = 20
PRINT STRING$(80, 196); c$ + "." + f$
Добавлено через 23 минуты
если надо только перевод целых чисел:
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
CLS: u$ = "0123456789ABCDEF"
INPUT "vvedite chislo"; a$: INPUT "vvedite q"; q: INPUT "vvedite p"; p
FOR i = LEN(a$) TO 1 STEP -1: j = INSTR(u$, UCASE$(MID$(a$, i, 1))) - 1
    z = z + j * q ^ r: r = r + 1
NEXT
DO
    c$ = MID$(u$, (z MOD p) + 1, 1) + c$: z = z \ p
LOOP UNTIL z = 0
PRINT STRING$(80, 196); c$
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
07.03.2011, 00:54
еще не надоел с доработкой данной программы?
Нет не надоел. Ты молодец, мне бы столько терпения. Прогу протестирую как будет время.
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
07.03.2011, 19:57
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
Прогу протестирую как будет время.
хорошо.
нужно ли еще что-то изменить в коде программы?
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
08.03.2011, 00:12
нужно ли еще что-то изменить в коде программы?
Возможно, стоило бы добавить определение периодичности, а так всё кул. Позапускал посмотрел, вроде работает. Дальше Double этот алгоритм не пойдёт, да и нужно ли...
0
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
25.09.2011, 18:15
перевод целых чисел, длина числа ограниченно только длиной строки(хотя данного ограничения так и не заметил)
переводит напрямую без использования промежуточной сс.
QBasic/QuickBASIC
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
CLS
u$ = "0123456789ABCDEF"
INPUT "vvedite chislo: ", w$
INPUT "vvedite q: ", q
INPUT "vvedite p: ", p
DIM a(LEN(w$) - 1)
FOR i = 0 TO LEN(w$) - 1
    a(i) = INSTR(u$, UCASE$(MID$(w$, i + 1, 1))) - 1
NEXT
PRINT STRING$(80, 196); all_to_all$(a(), LEN(w$), q, p, u$)
FUNCTION all_to_all$ (a(), la, q, p, u$)
DO
    j = 0: snos = 0
    FOR i = 0 TO la - 1
        snos = snos * q
        snos = snos + a(i)
        IF (snos < p) AND (i > 0) AND (j > 0) THEN
            a(j) = 0: j = j + 1
        END IF
        IF (snos >= p) THEN
            a(j) = snos \ p
            snos = snos MOD p
            j = j + 1
        END IF
    NEXT
    res$ = MID$(u$, snos + 1, 1) + res$
    la = j
LOOP WHILE (la > 0)
all_to_all$ = res$
END FUNCTION
1
1255 / 705 / 359
Регистрация: 20.02.2010
Сообщений: 1,035
26.09.2011, 18:57
или в строковом виде
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CLS
INPUT "vvedite chislo: ", a$
INPUT "vvedite q: ", q
INPUT "vvedite p: ", p
PRINT STRING$(80, 196); all_to_all$(a$, q, p)
FUNCTION all_to_all$ (a$, q, p)
u$ = "0123456789ABCDEF"
DO
    snos = 0
    FOR i = 1 TO LEN(a$)
        snos = snos * q
        snos = snos + INSTR(u$, UCASE$(MID$(a$, i, 1))) - 1
        IF (snos < p) AND (LEN(w$) > 0) THEN w$ = w$ + CHR$(48)
        IF (snos >= p) THEN
            w$ = w$ + MID$(u$, (snos \ p) + 1, 1)
            snos = snos MOD p
        END IF
    NEXT
    res$ = MID$(u$, snos + 1, 1) + res$
    a$ = w$
    w$ = ""
LOOP WHILE (LEN(a$) > 0)
all_to_all$ = res$
END FUNCTION
1
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 2
26.02.2014, 09:18
в qbasic оператор FIX глючный осторожно иногда
QBasic/QuickBASIC
1
2
3
d3# = (drob# - verxdrob#) * 10#
  d4# = d3# + .000000004000002# ',,баг функции фикс вылечен дабавлением дроби целому числу
  n# = FIX(d4#)
полный текст программы
QBasic/QuickBASIC
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
 CLS
 '0-99 9
'100 199 9
'300 399 9
'
'0 тыщ 27
'1 тыщ 27
'3 тыщ 27
'0-9999 деститыщ =27*3=81
'
'0 дестыщ 81
'1        81
'3        81
'0-9 9999 = 81*3= 243
'
'0 стотыщ 243
'9*3*3*3(*3*3*3*3)
'  до сотни
'    до тыс
'      до дес тыс
'                9999 9999 =19683 числа которые имеют числа 0,1,3
 
 REM n$ = "txtm2.txt"  заремлено вывод в фаил при поиске ошибки функции FIX()
  REM  OPEN n$ FOR OUTPUT AS #1
 s# = 0#
REM   PRINT #1, "Это хранится в файле"
 FOR i# = 0# TO 9999# 'ищет только цифры 0,1,3 первые от 0 до 9999 (результат 81 числа содержат только 0,1,3 на диаппазоне от 0 до 9999)
REM   PRINT #1, "i#= "; i#
  s# = 0#
 n# = 0#
 REM крутим число 8 раз
 FOR y# = 1# TO 8#
 pokaz# = 10# ^ y#
 drob# = i# / pokaz#
 verxdrob# = FIX(drob#)
 d3# = (drob# - verxdrob#) * 10#
  d4# = d3# + .000000004000002# ',,баг функции фикс вылечен дабавлением дроби целому числу
  n# = FIX(d4#)
 REM  PRINT #1, " y#= "; y#; " pokaz#= "; pokaz#; " drob#= "; drob#; " verxdrob#= "; verxdrob#; " d3#= "; d3#; " n#= "; n#
 REM PRINT n#
 IF n# = 0# OR n# = 1# OR n# = 3# AND n# <> 2# AND n# <> 4# AND n# <> 5# AND n# <> 6# AND n# <> 7# AND n# <> 8# AND n# <> 9# THEN tr# = 1 ELSE tr# = 0#
 s# = s# + tr#
 IF s# < 8# THEN flag# = 0# ELSE flag# = 1#
 n# = 0#
 NEXT y#
 sflag# = sflag# + flag#
REM  PRINT #1, " sflag#= "; sflag#
 NEXT i#
 PRINT sflag#
 END
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2014, 09:18
Помогаю со студенческими работами здесь

Перевод числа из двоичной в десятичную систему счисления
(перевод в qbasic из 2cc в 10cc) вот прога...препод сказал что работает но выдаёт немного нете результаты....сказал всего навсего надо...

Написать функцию для перевода чисел из двоичной системы счисления в троичную
4. Написать функцию для перевода чисел из двоичной системы счисления в троичную. Пожалуйста помогите,если не трудно(

Перевод чисел в различные системы счисления
Помогите решить задачки,пожалуйста!Задания отсканированны во вложении!Зарание спасибо))

Перевод чисел в различные системы счисления
Нужно составить программу: Перевести действительное число X заданное в системе счисления с основанием q в систему счисления с основанием...

Перевод из римской системы счисления в арабскую
Перевод из римской системы счисления в арабскую CLS INPUT &quot;Введите римское число&quot;, a$ d = 0 FOR i = 1 TO LEN(a$) e$ =...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru