Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 4

Под каждым двоичным числом в файле указать его значение в шестнадцатеричной системе счисления

18.05.2016, 22:57. Показов 868. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите, пожалуйста, составить программу на Паскале, второй день сижу ломаю голову, заранее спасибо)
Собственно вот само задание.
Требуется составить программу, которая под каждым двоичным числом в файле указывает его значение в шестнадцатеричной системе счисления. Например, 1101010111110 1000111111 0 0111100.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2016, 22:57
Ответы с готовыми решениями:

Для каждого числа после знака равенства указать его значение в десятичной системе счисления
Исходный файл содержит числа в восьмеричной системе счисления, отделенные друг от друга запятыми. Составить программу, которая для каждого...

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления
Помогите пожалуйста! Дан список,содержащий запись целых неотрицательных чисел в двоичной системе счисления. Заменить каждый элемент...

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления.
Дан список, содержащий запись неотрицательных целых чисел в двоичной системе счисления. Заменить каждый элемент списка на его запись в...

3
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
18.05.2016, 23:55
Grizzly1, существует математическая формула перевода числа из двоичной системы в шестнадцатиричную. Нужно только знать, что:
00112 = 20+21 = 310 = 316 и
11112 = 20+21+22+23 = 1510 = F16.
п.с. Надеюсь формулу сам выведешь.
0
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 4
19.05.2016, 18:35  [ТС]
Хорошо, спасибо постараюсь что-нибудь придумать.

Добавлено через 17 минут
А как-нибудь вот этот код можно подогнать под моё задание?
Задание данного кода похожее, только там под каждым шестнадцатиричном числом указать его в деясятичной системе?
Если можно, то как? заранее спасибо

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var f:text;
    s,s1:string;
    a,c,n:integer;
begin
assign(f,'input.txt');//файл в папке с программой
reset(f);
readln(f,s);
close(f);
s:=s+' ';
append(f);
writeln(f,'');
while pos(' ',s)>0 do
 begin
  s1:='$'+copy(s,1,pos(' ',s)-1);
  n:=length(s1)-1;
  val(s1,a,c);
  write(f,a:n,' ');
  delete(s,1,pos(' ',s));
 end;
write('Файл input.txt переписан');
close(f);
readln
end.
Добавлено через 7 минут
Или же вот этот код правильный?
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Program KR;
type
typemas=array[1..65] of string[4];
 
Var
 f: text;
 i, j: byte;
 s: string;
 c: char;
 mas: typemas;//массив хранит тетрады числа s  и 16-ые значения этих тетрад(после процедуры перевод)
 mas1:array of string;//массив 16-х чисел
 
function Analis(s:string; var mas: typemas):string;
 Var
   i:byte;
 procedure Ispravlenie(s:string; var a:string);
   Begin
    case length(s) of
    0:writeln('Строка пустая');
    1:a:='0'+'0'+'0'+s;
    2:a:='0'+'0'+s;
    3:a:='0'+s;
    4:a:=s;
    end;
   end;
 
Begin
 for i:=1 to 65 do
    mas[i]:='';
 case length(s) of
 0..3: ispravlenie(s,mas[1]);
 else
  begin
//i номер тетрады, отсчитанной с конца строки s
   for i:=1 to length(s) div 4 do
      ispravlenie(copy(s, (length(s)-3)*i,4),
          mas[length(s) div 4-i+2]);
  ispravlenie(copy(s,1,length(s)-i*4),mas[1]);
  end;
// в массиве находятся числа типа "хххх"
end;
end;
 
//вх.параметр процедуры массив тетрадв виде "хххх",вых."16-ое число" mas1
 
procedure vypolnenie(mas: typemas; var mas1: string);
var
 i:byte;
begin
 mas1:='';
 i:=1;
 repeat
  case mas[i] of
  '0000': mas1:='0'+mas1;
  '0001': mas1:='1'+mas1;
  '0010': mas1:='2'+mas1;
  '0011': mas1:='3'+mas1;
  '0100': mas1:='4'+mas1;
  '0101': mas1:='5'+mas1;
  '0110': mas1:='6'+mas1;
  '0111': mas1:='7'+mas1;
  '1000': mas1:='8'+mas1;
  '1001': mas1:='9'+mas1;
  '1010': mas1:='A'+mas1;
  '1011': mas1:='B'+mas1;
  '1100': mas1:='C'+mas1;
  '1101': mas1:='D'+mas1;
  '1110': mas1:='E'+mas1;
  '1111': mas1:='F'+mas1;
  else writeln('Ошибка в вычислениях');
  end;
 inc(i);
 until mas[i]=' ';
//в основной программе при инициализации массива 65-й элемент по-любому равен пробелу поэтому выход из цикла обеспечен
end;
 
 
Begin
 assign(f,'perevod.txt');
 reset(f);
 i:=1;
 while not EOF(f) do
  begin
   s:='';
   repeat
    read(f,c);//c-символ
    s:=s+c;
   until (c<>' ')or(EOF(f));
   s:=copy(s,1,pos(' ',s)-1);
    //инициализация массива
     for i:=1 to 65 do
     mas[i]:='';
     analis(s, mas);
    //mas содержит тетрады двоичнойстроки s
    vypolnenie(mas, mas1[i]);
    //массив mas1 содержит 16-ое представление двоичной строки S
    inc(i);
   end;
//mas1 сод. 16-ые числа из файла
append(f);
for j:=1 to i-1 do
write(f,mas1[j]);
close(f);
readln;
end.
0
0 / 0 / 0
Регистрация: 18.05.2016
Сообщений: 4
20.05.2016, 00:54  [ТС]
Подскажите пожалуйста, что я делаю не так?
Задача в следующем: Требуется составить программу, которая под каждым двоичным числом в файле указывает его значение в шестнадцатеричной системе счисления. Например, 1101010111110 1000111111 0 0111100.
Вот программа, которую удалось написать. Но постоянно вылетает ошибка 201 или же 106. В чём причина?
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
program kyrs;
type DinMasINT=array of integer;
     DinMasSTR=array of string;
var x,k1,ost,z,dl,i,j,k,max:integer;
    des,a,dlina,dlina1:DinMasINT;
    s,dv,dev:dinmasSTR;
    f:text;
    t:string;
    c:array [1..100] of integer;
begin
 
 
assign(f,'kyrs.txt');
reset(f);
readln(f,t);
close(f);
writeln(t);
dl:=length(t);
k:=1;
for i:=1 to dl do
 if (copy(t,i,1)=' ') and (copy(t,i+1,1)<>' ') then k:=k+1;
writeln('Количество=',k);
setlength(dev,k);
setlength(des,k);
setlength(dlina,k);
setlength(dlina1,k);
setlength(s,k);
setlength(dv,k);
setlength(a,k);
j:=0;
for i:=1 to dl do
begin
 if  (copy(t,i,1)<>' ')then s[j]:=s[j]+copy(t,i,1);
 if (copy(t,i,1)=' ') and (copy(t,i+1,1)<>' ') then j:=j+1;
end;
for i:=0 to k-1 do
 dlina[i]:=length(s[i]);
assign(f,'kyrs.txt');
rewrite(f);
for i:=0 to k-1 do
 writeln(f,s[i]);
close(f);
assign(f,'kyrs.txt');
reset(f);
for i:=0 to k-1 do
 readln(f,a[i]);
close(f);
for i:=0 to k-1 do
 writeln(a[i]);
 
 begin
 for i:=1 to 100 do
 z:=a[i];
 k1:=1;
 ost:=z mod 16;
 z:=z div 16;
 des[i]:=ost;
  for j:=1 to dlina[i] do
  begin
   k1:=k1*2;
   ost:=z mod 16;
   z:=z div 16;
   des[i]:=des[i]+ost*k1;
  end;
  des[i]:=des[i]+z*k1*2;
 end;
writeln;
for i:=0 to k-1 do
 writeln(des[i]);
 
writeln;
for i:=0 to k-1 do
 begin
  k1:=0;
  z:=des[i];
  while z div 15>=1 do
   c[k1+1]:=z;
   for x:=k1+1 downto 1 do
    case c[x] of
   0000:dev[i]:=dev[i]+'0';
   0001:dev[i]:=dev[i]+'1';
   0010:dev[i]:=dev[i]+'2';
   0011:dev[i]:=dev[i]+'3';
   0100:dev[i]:=dev[i]+'4';
   0101:dev[i]:=dev[i]+'5';
   0110:dev[i]:=dev[i]+'6';
   0111:dev[i]:=dev[i]+'7';
   1000:dev[i]:=dev[i]+'8';
   1001:dev[i]:=dev[i]+'9';
   1010:dev[i]:=dev[i]+'A';
   1011:dev[i]:=dev[i]+'B';
   1100:dev[i]:=dev[i]+'C';
   1101:dev[i]:=dev[i]+'D';
   1110:dev[i]:=dev[i]+'E';
   1111:dev[i]:=dev[i]+'F';
 end;
 end;
max:=16;
assign(f,'kyrs.txt');
rewrite(f);
for i:=0 to k-1 do
 write(f,s[i],'':max-dlina[i]);
writeln(f);
for i:=0 to k-1 do
 write(f,dev[i],'':max-length(dev[i]));
close(f);
writeln('Документ изменен');
readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2016, 00:54
Помогаю со студенческими работами здесь

Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления
Дан список, содержащий запись неотрицательных целых чисел в двоичной системе счисления. Заменить каждый элемент списка на его запись в...

Динамические структуры: Заменить каждый элемент списка на его запись в шестнадцатеричной системе счисления
Дан список, содержащий запись неотрицательных целых чисел в двоичной системе счисления. Заменить каждый элемент списка на его запись в...

Вычислить выражение и вывести результат в двоичной и в шестнадцатеричной системе счисления
Добрый вечер! Написать программу на ассемблере для решения вот такого уравнения, х и у задаем различные от 1 и 0: z=x*x-(y*y)/2+3 ...

Дана строка - запись числа в двоичной системе счисления. Преобразуйте ее в строку - запись числа в шестнадцатеричной системе счисления
Дана строка, представляющая собой запись числа в двоичной системе счисления. Преобразуйте ее в строку, представляющую собой запись числа в...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru