899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
1

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

17.02.2010, 22:27. Показов 624. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать програма, которая переводит числа с 8 в 10 систему счисления, и обратно!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2010, 22:27
Ответы с готовыми решениями:

Перевод любого числа из 16 системы счисления в 2 систему счисления.
Здравствуйте,помогите решить задачку в Pascal !!! Для перевода любого числа из 16 системы...

Системы счисления
Пожалуйста помогите с лабораторной! Даны натуральные числа N, M (2<=M<=16). Вывести на экран...

Системы Счисления.
Доброго времени суток ! Нужна ваша помощь в написании программы на Паскале. Программа должна...

системы счисления
Почему неправильно переводит дробную часть с 10 сс в 10 сс? uses crt; const a: string =...

9
9715 / 2470 / 52
Регистрация: 06.03.2009
Сообщений: 8,500
17.02.2010, 22:28 2
MILAN, поиск по форуму не пробовали?
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
17.02.2010, 22:35 3
Поищем?
0
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
17.02.2010, 22:41  [ТС] 4
Всем спасибо!!!!
0
ЙожЪ
64 / 60 / 17
Регистрация: 23.10.2009
Сообщений: 652
17.02.2010, 22:44 5
У меня похожая программа, вроде все работает но, если ввести очень большое число, то оно сильно округляет результат, чего делать не должно... подскажите как сделать, чтобы выводило все число,...
Дело в том, что в паскале нет такого типа данных, чтобы вместить все символы.. я так понял что нужен массив, где в каждой ячейке хранится число от 0 до 9, и суммируются например 2 числа 1 2 3 и 9 9, то будет 2 2 2(каждая цифра в отдельной ячейке)... ну и так до безконечности... вот пример моей задачи

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
uses crt;
label back1, back2;
const n=50;
symbol=['a'..'f','A'..'F','0'..'9'];
var
otvet:real;
flag:boolean;
stStroka:string[n+1];
bSi,i:byte;
rKod: array[1..50]of real;
 
begin
back1: write('Введите систему исчисления 2..16 -> '); readln(bSi);
if (bSi<2) or (bSi>16)
        then begin clrscr;
        writeln('Неправильный ввод! Повторите!'); goto Back1; end;
        
        back2: write('Введите число:'); readln(stStroka);
        if length(stStroka)>n
           then begin clrscr;
           writeln('Количество символов >' ,n,' повторите ввод!'); goto back2; end;
           
for i:=1 to length(stStroka) do
begin
if not (stStroka[i] in symbol)
   then begin clrscr;
   writeln('Число содержит недопустимые символы! Повторите ввод!'); goto back2; end;
   if stStroka[i]='0' then rKod[i]:=0 ;
   if stStroka[i]='1' then rKod[i]:=1 ;
   if stStroka[i]='2' then rKod[i]:=2 ;
   if stStroka[i]='3' then rKod[i]:=3 ;
   if stStroka[i]='4' then rKod[i]:=4 ;
   if stStroka[i]='5' then rKod[i]:=5 ;
   if stStroka[i]='6' then rKod[i]:=6 ;
   if stStroka[i]='7' then rKod[i]:=7 ;
   if stStroka[i]='8' then rKod[i]:=8 ;
   if stStroka[i]='9' then rKod[i]:=9 ;
   if (stStroka[i]='a') or (stStroka[i]='A') then rKod[i]:=10 ;
   if (stStroka[i]='b') or (stStroka[i]='B') then rKod[i]:=11 ;
   if (stStroka[i]='c') or (stStroka[i]='C') then rKod[i]:=12 ;
   if (stStroka[i]='d') or (stStroka[i]='D') then rKod[i]:=13 ;
   if (stStroka[i]='e') or (stStroka[i]='E') then rKod[i]:=14 ;
   if (stStroka[i]='f') or (stStroka[i]='F') then rKod[i]:=15 ;
 
   if rKod[i]>=bSi
      then begin clrscr;
      writeln('Градация числа больше системы счисления! Повторите ввод!'); goto back2; end;end;
      
      otvet:=0;
      for i:=1 to length(stStroka) do
otvet:=otvet+rKod[i]*(exp((length(stStroka)-i)*ln(bSi)));
writeln('Число ',stStroka,' в десятичном коде будет = ',Otvet); readln; clrscr; end.
Миниатюры
Системы счисления  
0
51 / 49 / 17
Регистрация: 30.10.2009
Сообщений: 152
17.02.2010, 23:16 6
Делайте перевод чисел с конца строки (основание в нулевой степени). Затем объявляем переменную
(я назвал OsnvSt), в начале равную 1, затем по мере продвижение по строке в цикле домножаем на основание.
Pascal
1
2
OsnvSt:=OsnvSt*rKod[i]  {Используем переменную которую в цикле умножаем на основание}
otvet=otvet+rKod[i]*OsnvSt
0
ЙожЪ
64 / 60 / 17
Регистрация: 23.10.2009
Сообщений: 652
18.02.2010, 00:18 7
alex0983, Это не решает проблемы, как вы видите, на прилагаемом скриншоте число не должно отображаться с мантиссой,а полностью выводиться без округления.

Сам алгоритм решения верный, и программа вычисляет маленькие значения, а где числа очень большие- она округляет!
0
51 / 49 / 17
Регистрация: 30.10.2009
Сообщений: 152
18.02.2010, 00:26 8
Если просто вывод без мантисы то так:
Pascal
1
writeln('Число ',stStroka,' в десятичном коде будет = ',Otvet:25:0);
где 0 - число знаков после запятой.
0
ЙожЪ
64 / 60 / 17
Регистрация: 23.10.2009
Сообщений: 652
18.02.2010, 00:59 9
alex0983, ты не читаешь))) говорю же введи в врогу систему исчисления 16 и число FFFFFFFFFFFFFFF(15 раз F), и поймёшь про что я=)
0
ЙожЪ
64 / 60 / 17
Регистрация: 23.10.2009
Сообщений: 652
16.03.2010, 20:16 10
Тема актуальна, нужно сделать, чтобы каждый раз число разбивалось поразрядам и забивалось в отдельный елемент массива, после чего второе число так же и слаживалось по разрядам =(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2010, 20:16
Помогаю со студенческими работами здесь

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

Системы счисления
Прошу помочь в написании программы на языке Pascal: Пусть n натуральных чисел заданы своими...

Системы счисления
Получить последовательность {d}_{k}, {d}_{k-1},..,{d}_{0} десятичных цифр числа 100!, , т. е. такую...

Системы счисления
Даны 2 вещественных числа с фиксированной точкой без знака в 10 системе. Их нужно перевести в 8...

Системы счисления
салам пацанам! привет девчёнкам! такая тема.......написать на языке программирования Паскаль...

Системы счисления
салам пацанам! привет девчёнкам! такая тема.......написать на языке программирования Паскаль...


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

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

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