Перевести строку в целое число в восьмеричной системе счисления - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Вводится строка символов. Если она является изображением целого числа в двоичной системе счисления, то перевести ее в целое число в восьмеричной системе счисления, иначе выдать сообщение о некорректном вводе. Промежуточный перевод в десятичную систему запрещен. Заготовка есть, но у меня не получается даже проверить делимость числа на триады, что бы если что, добавить в конце 0. Помогите пожалуйста. Пока все, что есть.

Решение задачи: «Перевести строку в целое число в восьмеричной системе счисления»

textual
Листинг программы
uses crt;
const trd:array[0..7] of string[3]=('000','001','010','011',
                                    '100','101','110','111');
var s2,s8:string;
    i,k:integer;
    c:char;
begin
clrscr;
{ввод строки}
writeln('Введите число в СС 2');
readln(s2);
k:=0;
i:=1;
while(i<=length(s2))and(k=0) do
if not(s2[i] in ['0','1'])then k:=1
else inc(i);
if k=1 then
 begin
  write('Строка не является записью числ в СС ');
  readln;
  exit
 end;
{перевод в СС 8}
while length(s2) mod 3 <> 0 do s2:='0'+s2;
//дополняем строку влево до длины, кратной 3
s8:='';
while s2<>'' do
 begin
  for i:=0 to 7 do
  if copy(s2,1,3)=trd[i] then s8:=s8+chr(i+48);
  {сравниваем с массивом значений для перевода
  и записываем найденное значение в строку S8}
  delete(s2,1,3);{удаляем триаду}
 end;
writeln('Число в 8 системе счисления:');
write(s8);
readln
end.

Объяснение кода листинга программы

  1. Создается переменная s2, которая предназначена для хранения введенной пользователем строки.
  2. Создается переменная s8, которая будет использоваться для хранения числа в восьмеричной системе счисления.
  3. Создаются две переменные i и k, которые будут использоваться для обработки строки s2. Переменная i будет итерироваться от 1 до длины строки s2, а переменная k будет использоваться для отслеживания количества цифр в строке s2.
  4. Запускается цикл while, который будет выполняться до тех пор, пока длина строки s2 не станет кратной 3.
  5. Внутри цикла while строка s2 дополняется до длины, кратной 3, путем добавления нулей в начало.
  6. Создается пустая строка s8, которая будет использоваться для хранения числа в восьмеричной системе счисления.
  7. Запускается еще один цикл while, который будет выполняться до тех пор, пока строка s2 не станет пустой.
  8. Внутри цикла while происходит сравнение каждого символа в строке s2 с соответствующим символом в массиве trd. Если символы совпадают, то соответствующий символ из массива trd добавляется в конец строки s8.
  9. После завершения цикла while удаляется триада (три первых символа) из строки s2.
  10. Выводится сообщение с числом, записанным в восьмеричной системе счисления, которое хранится в переменной s8.
  11. Программа завершается после того, как пользователь нажмет клавишу Enter.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы