Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
1

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

26.02.2014, 19:22. Показов 2958. Ответов 13
Метки нет (Все метки)

Для целых чисел!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2014, 19:22
Ответы с готовыми решениями:

Написать программу перевода чисел из одной системы счисления в другую
Написать программу перевода чисел из одной системы счисления в другую (например, из 2-ичной,...

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

Программа для перевода чисел из одной системы счисления в другую
Написать программу для перевода чисел из одной системы счисления в другую. Из 10 в 2, Из 16 в 8....

Написать программу для перевода чисел из одной системы счисления в другую
написать программу для перевода из одной системы счисления в другую. Из 8 в 2; из 10в 8

13
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
26.02.2014, 22:53  [ТС] 3
Нужно любая-десятичная-любая!
0
Форумчанин Паскаля
77 / 90 / 55
Регистрация: 08.11.2013
Сообщений: 399
Записей в блоге: 2
26.02.2014, 23:21 4
Тогда просто скомбинируйте

Добавлено через 44 секунды
Возьмите сначала переведите в дясятичную а потом с неё уже другую процедуру перевода в любую систему
0
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
27.02.2014, 21:44  [ТС] 5
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
var
  s: string;
  i,b,a: integer;
  d,k: real;
  f,e: boolean;
  c: char;
 
begin
  Write('Âââåäèòå îñíîâàíèå ñèñòåìû: ');
  ReadLn(b);
  e:=b<=1;
  if e then
    WriteLn('Îøèáêà: îñíîâàíèå ñèñòåìû äîëæíî áûòü íå ìåíåå 2')
  else begin
    Write('Ââåäèòå ÷èñëî â ñèñòåìå ñ îñíîâàíèåì ',b,': ');
    ReadLn(s);
    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 e then break;
      if a>=0 then d:=d*b+a
    end;
    if e then
      WriteLn('Îøèáêà â çàïèñè ÷èñëà')
    else
      WriteLn('Çíà÷åíèå â äåñÿòè÷íîé ñèñòåìå: ',d*k)
  end;
  ReadLn
end.
перевод из любой в десятичную, нужно дописать 2 половину...поможете?

Добавлено через 1 минуту
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
var
    k: integer;
    s: byte;
 
procedure scale (a: integer; b: byte);
    begin
        if b > 10 then
            write ('Îñíîâàíèå äîëæíî áûòü ìåíüøå 10!')
        else begin
            if a > 1 then
                scale (a div b, b);
            write (a mod b)
        end;
    end;
 
begin
 
    write ('Ââåäèòå ÷èñëî: ');
    readln (k);
 
    write ('Ïåðåâîä â ñèñòåìó ñ÷èñëåíèÿ: ');
    readln (s);
 
    scale (k, s);
 
readln
end.
через процедуру 2 часть, только здесь до 10 системы счисления, а нужно до 16!
0
109 / 50 / 55
Регистрация: 17.09.2013
Сообщений: 298
27.02.2014, 21:49 6
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
Unit Convert;
interface
const
digit='0123456789ABCDEF';
Function Con(ch:string; ss1,ss2:integer):string;
implementation
Function Con(ch:string; ss1,ss2:integer):string;
var
z,i:longint;
begin
if ((ss1>=2) and (ss1<=16)) and ((ss2>=2) and (ss2<=16)) then
 begin
     z:=0;
     while (ch[1]='0') do
      delete(ch,1,1);
     for i:=1 to length(ch) do
      z:=z*ss1+pos(ch[i],digit)-1;
     ch:='';
     repeat
       ch:=digit[(z mod ss2)+1]+ch;
       z:=z div ss2;
     until z=0;
     Con:=ch;
  end;
 end;
end.
держи мой модуль по переводу из любой системы счисления в любую
Con(<система_счисления_из_которой_переводишь>,<система_счисл ения_в_которую_переводишь>);
0
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
27.02.2014, 22:14  [ТС] 7
В этом и подвох, нужно через десятичную!(
0
109 / 50 / 55
Регистрация: 17.09.2013
Сообщений: 298
27.02.2014, 22:25 8
я перевожу из любой в десятичную и из десятичной снова в любую
0
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
27.02.2014, 23:22  [ТС] 9
Ошибка: Нельзя запустить модуль
0
Модератор
63667 / 47245 / 32557
Регистрация: 18.05.2008
Сообщений: 114,488
28.02.2014, 07:33 10
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
uses crt;
const digit:string[16]='0123456789ABCDEF';
var n,s:string;
    c1,c2,m,i,k:integer;
    mn:set of char;
begin
repeat
writeln('Введите из какой CC от 2 до 16:');
readln(c1);
until c1 in [2..16];
mn:=[];
for i:=1 to c1 do
mn:=mn+[digit[i]];
repeat
writeln('Введите число в соответствии с CC:');
readln(n);
k:=0;
for i:=1 to length(n) do
if not (n[i] in mn) then k:=1;
if k=1 then writeln('Число введено неверно, повторите ввод.');
until k=0;
//перевод из СС с1 в СС 10
m:=0;
while n[1]='0' do
delete(n,1,1);
for i:=1 to length(n) do
m:=m*c1+pos(n[i],digit)-1;
writeln('Введите в какую CC:');
readln(c2);
//перевод из СС 10 в СС с2
s:='';
repeat
 s:=digit[(m mod c2)+1]+s;
 m:=m div c2;
until m=0;
writeln('Перевод из ',c1,' CC --> ',c2,' CC:');
writeln(s);
end.
1
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
28.02.2014, 19:15  [ТС] 11
А еще можно ли сделать это для дробных чисел?
0
Модератор
63667 / 47245 / 32557
Регистрация: 18.05.2008
Сообщений: 114,488
28.02.2014, 19:33 12
Лучший ответ Сообщение было отмечено KsuKsuKsunia как решение

Решение

Перевод в различные системы счисления
1
109 / 50 / 55
Регистрация: 17.09.2013
Сообщений: 298
28.02.2014, 19:59 13
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
uses crt;
const
digit='0123456789ABCDEF';
var
ch:string;
z,ss1,ss2,i:longint;
begin
while true do
begin
write('Vvedite SS iz kotoroi perevodite chislo: ');
repeat
readln(ss1);
until (ss1>=2) and (ss1<=16);
 
write('Vvedite SS v kotoryiy perevodite chislo: ');
repeat
readln(ss2);
until (ss2>=2) and (ss2<=16);
 
write('Vvedite chislo kotoroe hotite perevesti: ');
readln(ch);
 
{ToDec}
 z:=0;
 while (ch[1]='0') do
  delete(ch,1,1);
 for i:=1 to length(ch) do
  z:=z*ss1+pos(ch[i],digit)-1;
 
{FromDec}
ch:='';
 repeat
    ch:=digit[(z mod ss2)+1]+ch;
    z:=z div ss2;
  until z=0;
 writeln(ch);
end;
end.
1
1 / 1 / 1
Регистрация: 12.11.2013
Сообщений: 81
24.03.2014, 22:45  [ТС] 14
А для дробных чисел как сделать? Моя не правильно переводит если с калькулятором проверить...(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2014, 22:45

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

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

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

В программу для перевода с двоичной системы счисления в десятичную добавить вывод на неправильные символы
Как в программу для перевода с двоичной системы счисления в десятичную добавить вывод на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.