Задано неотрицательное целое число, записанное в восьмеричной системе счисления (за числом — пробел). Напечатать это число в пятеричной системе счисления — Pascal(Паскаль)

uses crt;
const zn:string[8]='01234567';//цифры в СС 8
var s:string;
    n,sum,sum2:longint;
    i,j:integer;
    k:byte;
    c:char;
 
begin
clrscr;
writeln('Введите неотрицательное число в СС 8, окончание ввода пробел:');
s:='';
repeat
c:=readkey;//определяем код нажатой клавиши
if c in ['0'..'7'] then//если это цифры 0-7
 begin
  write(c);//выводим
  s:=s+c;//пишем в строку
 end
else if c=' 'then writeln;//если пробел, конец, на новую строку
until c=' ';
sum:=0;//число в СС 10
for i:=length(s)-1 downto 1 do// с предпоследней цифры строки
 begin
  if s[i] in ['1'..'7'] then//значащая цифра
   begin
    sum2:=ord(s[i])-48;//переводим ее код в десятичную цифру
    for j:=1 to length(s)-i do//считаем разряды
    sum2:=sum2*8;//возводим 8 в степень разряда
   end
  else sum2:=0;
  sum:=sum+sum2;//полное число
 end;
//если последняя значащая, то прибавляемм в СС 10
if s[length(s)]in ['1'..'7'] then inc(sum,ord(s[length(s)])-48);
s:='';//число в СС 5
while sum>0 do//пока десятичное больше ноля
 begin
  s:=zn[sum mod 5+1]+s;//в начало строки пишем остаток от деления на 5
  sum:=sum div 5;//сокращаем в 5 раз
 end;
write('Число в СС 5 = ',s);
readln
end.

Leave a Comment

57 − 53 =