powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Pascal ABS
4 сообщений из 4, страница 1 из 1
Pascal ABS
    #40081044
Paula09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста. Нужно написать подробно для чего каждая строка нужна. И похоже программа не переводит в шестнадцатеричную систему, в чем ошибка?
Есть программа:
program pr1; // Программа pr1

function octtoint( s: string ): integer;
var i, r: integer; // обьявление переменных
// Обьявляем переменные var i, r с типом integer
begin // начало блока
r := 0; // присваиваем к r значение 0
for i := 1 to length(s) do
r := r * 8 + (ord(s[i]) - ord('0')); // присваиваем к r значение r * 8 + (ord(s[i]) - ord('0'))

octtoint := r; // присваиваем к octtoint значение r
end; // конец блока

const digits: string = '0123456789abcdef';

function inttohex( n: integer ): string;
var r: string; // обьявление переменных
// Обьявляем переменную var r с типом string
begin // начало блока
r := ''; // присваиваем к r значение ''
while (n > 0) do // Пока истинно выражение (n > 0)
begin // начало блока
r := digits[ n mod 16 + 1 ] + r; // присваиваем к r значение digits[ n mod 16 + 1 ] + r
n := n div 16; // присваиваем к n значение n div 16
end; // конец блока

inttohex := r; // присваиваем к inttohex значение r
end; // конец блока

function inttodop( n: integer ): string;
var // обьявление переменных
i, n2: integer;
// Обьявляем переменные i, n2 с типом integer
r: string;
// Обьявляем переменную r с типом string
begin // начало блока
n2 := -n; // присваиваем к n2 значение -n2 // присваиваем к n2 значение -n
r := ''; // присваиваем к s2 значение '' // присваиваем к r значение ''

for i := 0 to 32 do
if ( (n2 and (1 shl i)) <> 0 ) then // проверяем условие ( (n2 and (1 shl i)) <> 0 ) // проверяем условие ( (n2 and (1 shl i)) <> 0 )
r := '1' + r
else
r := '0' + r; // присваиваем к s2 значение '0' + s2 // присваиваем к r значение '0' + r
inttodop := r; // присваиваем к inttodop значение r
end; // конец блока

var // обьявление переменных
p, p2: integer;
// Обьявляем переменные p, p2 с типом integer
t, n: integer;
// Обьявляем переменные t, n с типом integer
f: TextFile;
// Обьявляем переменную f с типом TextFile
s, s2: string;
// Обьявляем переменные s, s2 с типом string
begin // начало блока
Assign( f, 'input.txt' ); // присвоить файловой переменной f файловое имя 'input.txt'
reset(f);
readln( f, s ); // ввести f, s
close(f);

writeln('Во что переводить?' ); // вывести 'Во что переводить?'
writeln('1. Десятичная' ); // вывести '1. Десятичная'
writeln('2. Дополнительный код' ); // вывести '2. Дополнительный код'
writeln('3. Шестнадцатеричная' ); // вывести '3. Шестнадцатеричная'
write( 'Выберите: ' ); // вывести 'Выберите: '
readln(t); // ввести t

p := 1; // присваиваем к p значение 1
while (p <= length(s)) do // Пока истинно выражение (p <= length(s))
begin // начало блока
p2 := Pos( ',', s, p ); // присваиваем к p2 значение Pos( ',', s, p )
if (p2 <= 0) then // проверяем условие (p2 <= 0)
p2 := length(s)+ 1; // присваиваем к p2 значение length(s)+ 1
s2 := copy( s, p, p2-p ); // присваиваем к s2 значение copy( s, p, p2-p )
n := octtoint( s2 ); // присваиваем к n значение octtoint( s2 )

if (t = 1) then // проверяем условие (t = 1)
writeln(s2,'=',n); // вывести s2,'=',n
if (t = 2) then // проверяем условие (t = 2)
writeln(s2,'=', inttodop(n) ); // вывести s2,'=', inttodop(n)
if (t = 2) then // проверяем условие (t = 2)
writeln(s2,'=', inttohex(n)); // вывести s2,'=', inttohex(n)

p := p2+1; // присваиваем к p значение p2+1
end; // конец блока
end. // конец блока

Задание:
Исходный файл содержит числа в восьмеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого такого числа из заданного диапазона после знака равенства указывает его значение в десятичной системе счисления, дополнительном коде или в шестнадцатеричной системе счисления по выбору пользователя, например:
00101111 = 33353, 0111 = 73, 10000 = 512, и т. д.
...
Рейтинг: 0 / 0
Pascal ABS
    #40081061
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function int2base( n: integer, digits: string ): string;
    var r: string; // обьявление переменных
                       // Обьявляем переменную var r с типом string
    var base:byte;
begin // начало блока
   r := ''; // присваиваем к r значение ''
   base = length(digits); // основание системы счисления
   while (n > 0) do // Пока истинно выражение (n > 0)
      begin // начало блока
          r := digits[ n mod base + 1 ] + r; // присваиваем к r значение digits[ n mod base + 1 ] + r
          n := n div base; // присваиваем к n значение n div base
      end; // конец блока
   int2base := r; // присваиваем к inttohex значение r
end; // конец блока



Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Pascal ABS
    #40081517
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
   r := ''; // присваиваем к r значение ''
   while (n > 0) do // Пока истинно выражение (n > 0)
      begin // начало блока
          r := digits[ n mod base + 1 ] + r; // присваиваем к r значение digits[ n mod base + 1 ] + r
          n := n div base; // присваиваем к n значение n div base
      end; // конец блока
   int2base := r; // присваиваем к inttohex значение r
end; // конец блока



Я охреневаю с таких бессмыссленых комментов к коду )))
...
Рейтинг: 0 / 0
Pascal ABS
    #40081519
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Cobalt747
aleks222
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
   r := ''; // присваиваем к r значение ''
   while (n > 0) do // Пока истинно выражение (n > 0)
      begin // начало блока
          r := digits[ n mod base + 1 ] + r; // присваиваем к r значение digits[ n mod base + 1 ] + r
          n := n div base; // присваиваем к n значение n div base
      end; // конец блока
   int2base := r; // присваиваем к inttohex значение r
end; // конец блока




Я охреневаю с таких бессмыссленых комментов к коду )))


ТС именно этого и хотел
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Pascal ABS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]