Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2015, 09:37   #1
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию Перевод целых 10-ых чисел в 16 с.с->2с.с->8c.c

Помогите пожалуйста!
У меня задача, перевод целых 10-ых чисел в 16 с.с->2с.с->8c.c
Я сделала отдельные процедуры по переводу из 10 в 16-ю и из 2-ой в 8-ую, а из 16-ой в 2-ую не могу ссобразить как мне нужно описать процедуру.
Задача по практике, очень нужна ваша помощь. Заранее спасибо

From Stilet: Не надо лезть в чужую тему. Посты перенес.

Последний раз редактировалось Stilet; 12.06.2015 в 13:23.
Anna17_04 вне форума Ответить с цитированием
Старый 12.06.2015, 09:57   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
function s16to2(s:string):string;
var i:integer;
begin
   Result:='';
   For i:=1 to Length(s) do
      Case s[i] of
      '0': Result:=Result+'0000';
      '1': Result:=Result+'0001';
      '2': Result:=Result+'0010';
      '3': Result:=Result+'0011';
      '4': Result:=Result+'0100';
      '5': Result:=Result+'0101';
      '6': Result:=Result+'0110';
      '7': Result:=Result+'0111';
      '8': Result:=Result+'1000';
      '9': Result:=Result+'1001';
      'A','a': Result:=Result+'1010';
      'B','b': Result:=Result+'1011';
      'C','c': Result:=Result+'1100';
      'D','d': Result:=Result+'1101';
      'E','e': Result:=Result+'1110';
      'F','f': Result:=Result+'1111';
      end;
end;

begin
   Writeln(s16to2('Ac1870'));
   Readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.06.2015, 10:04   #3
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию

Она не работает((
Anna17_04 вне форума Ответить с цитированием
Старый 12.06.2015, 10:05   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Как это не работает? Покажи ошибку!

В следующий раз меня не пугай!!! См. рис.
Изображения
Тип файла: png Безымянный.png (50.1 Кб, 21 просмотров)
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 12.06.2015 в 10:15.
newerow1989 вне форума Ответить с цитированием
Старый 12.06.2015, 11:44   #5
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию

Так у меня число вводиться с клавиатуры и мне нужно переводить его в разные системы счисления по цепочке
Anna17_04 вне форума Ответить с цитированием
Старый 12.06.2015, 12:06   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Так у меня число вводиться с клавиатуры
Изменить
Код:
begin
   Writeln(s16to2('Ac1870'));
на
Код:
var s:string;
begin
   Readln(s);
   Writeln(s16to2(s));

Цитата:
Я сделала отдельные процедуры по переводу из 10 в 16-ю и из 2-ой в 8-ую
Выкладывай сюда - я склею их! Все 3 перевода!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 12.06.2015 в 12:09.
newerow1989 вне форума Ответить с цитированием
Старый 12.06.2015, 12:13   #7
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию

{Перевод целых 10-ых чисел в 16-ю с.с->2c.c->8c.c}
Код:
program perevod;
const trd:array[0..7] of string[3]=('000','001','010','011','100','101','110','111');
Var s2, s8:string;
    i: byte;

Procedure perev10_16;
const znach: array [0..15] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var a: longint; res : string; d:0..15;
begin

writeln('введите число в десятеричной системе счисления-');
readln (a);
res := ' '; {инициализируем строку, в которой затем будем накапливать шестнадцатиричное представление.}
while (a<>0) do
begin
d := a mod 16;
a := a div 16;
res := znach[d]+res; {накапливаем строку из шестнадцатиричных цифр}
end;
writeln ('Число в 16 с.с-',res);
Writeln('__________________________');
end;

procedure perev2_8;
var i, k: byte;
a:string;
Begin

k:=0;
i:=1;
while (i<=length(a))and(k=0) do
if not(a[i] in ['0','1']) then k:=1
else i:=i+1;
//перевод в СС 8
while length(a) mod 3 <> 0 do a:='0'+a;
//дополняем строку влево до длины, крастной 3
s8:='';
while a<>'' do
  begin
  for i:=1 to 7 do
  if copy(a,1,3)=trd[i] then s8:=s8+chr(i+48);
  //сравниваем с массивом значений для перевода и записываем найденное значение в строку s8
  delete(a,1,3); //удаляем триаду
  end;
Write('Число в 8СС: ');
Writeln(s8);
end;

Begin
perev10_16;
perev2_8;
end.

Если не сложно, я буду очень признательна


Anna17_04, следующий раз свою тему создавайте, а не в чужой свои вопросы решайте
Модератор

Последний раз редактировалось Аватар; 12.06.2015 в 12:22.
Anna17_04 вне форума Ответить с цитированием
Старый 12.06.2015, 12:29   #8
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию

Извините, я не знала. Буду иметь в виду
Anna17_04 вне форума Ответить с цитированием
Старый 12.06.2015, 12:32   #9
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
procedure s16to2(var s:string);
var i:integer;
    Result:string;
begin
   Result:='';
   For i:=1 to Length(s) do
      Case s[i] of
      '0': Result:=Result+'0000';
      '1': Result:=Result+'0001';
      '2': Result:=Result+'0010';
      '3': Result:=Result+'0011';
      '4': Result:=Result+'0100';
      '5': Result:=Result+'0101';
      '6': Result:=Result+'0110';
      '7': Result:=Result+'0111';
      '8': Result:=Result+'1000';
      '9': Result:=Result+'1001';
      'A','a': Result:=Result+'1010';
      'B','b': Result:=Result+'1011';
      'C','c': Result:=Result+'1100';
      'D','d': Result:=Result+'1101';
      'E','e': Result:=Result+'1110';
      'F','f': Result:=Result+'1111';
      end;
   Writeln('Число в 16 с.с - ',Result);
   Writeln('__________________________ ');
   s:=Result;
end;

Procedure perev10_16(var res:string);
const znach: array [0..15] of char = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var a: longint; d:0..15;
begin
  writeln('введите число в десятеричной системе счисления - ');
  readln (a);
  res := ''; {инициализируем строку, в которой затем будем накапливать шестнадцатиричное представление.}
  while (a<>0) do
  begin
    d := a mod 16;
    a := a div 16;
    res := znach[d]+res; {накапливаем строку из шестнадцатиричных цифр}
  end;
  writeln ('Число в 16 с.с - ',res);
  Writeln('__________________________ ');
end;

procedure perev2_8(a:string);
const trd:array[0..7] of string[3]=('000','001','010','011','100','101','110','111');
var i, k: byte;
    s8:string;
Begin
  k:=0;
  i:=1;
  while (i<=length(a))and(k=0) do
    if not(a[i] in ['0','1']) then k:=1
    else i:=i+1;
  //перевод в СС 8
  while length(a) mod 3 <> 0 do a:='0'+a;
  //дополняем строку влево до длины, крастной 3
  while a<>'' do
  begin
    for i:=0 to 7 do//с нуля надо начинать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       if copy(a,1,3)=trd[i] then s8:=s8+chr(i+48);
       //сравниваем с массивом значений для перевода и записываем найденное значение в строку s8
    delete(a,1,3); //удаляем триаду
  end;
  Write('Число в 8СС: ');     
  Writeln(s8);
end;

var s:string;
Begin
  perev10_16(s);
  s16to2(s);
  perev2_8(s);
  Readln;
end.
Переделал. Там в процедуре perev2_8 исправил ошибку!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 12.06.2015, 12:53   #10
Anna17_04
 
Аватар для Anna17_04
 
Регистрация: 25.05.2015
Сообщений: 9
По умолчанию

Огромное спасибо! Все отлично работает))
А что была за ошибка?
Anna17_04 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана непустая последовательность целых чисел. Найти: Сумму чисел, больших числа x и количество всех чётных чисел maksim97maksim Паскаль, Turbo Pascal, PascalABC.NET 1 09.04.2014 13:59
Даны два целых числа A и B (A < B). Найти произведение всех целых чисел от A до B включительно. nadyaH Помощь студентам 10 29.10.2013 09:08
Перевод целых чисел (Pascal, Delphi) Ketya24 Помощь студентам 3 04.12.2011 00:14
Перевод целых чисел из одной системы счисления в другую =LeonZone= Помощь студентам 19 12.12.2010 16:18
Задача: перевод целых чисел в римские n0x Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2006 19:52