Другие языки программирования и технологии
Задача системы исчисления Паскаль
Имеется файл с данными. В файле столбиком выводятся четыре числа в различных системах счисления, а именно - 1. в бинарной, 2. восьмеричной, 3. десятичной 4. шестнадцатеричной. Другие системы не используются. Различные системы счисления используются в произвольном порядке и в произвольном наборе, т.е. может быть, например, два бинарных числа и ни одного восьмеричного. Все числа рассматриваются как целые и положительные. Ни одно из них по величине не превосходит 64000. Числа кодируются специальным образом так: 1. десятичные кодируются естественным образом (например: 123); 2. бинарные кодируются как последовательность нулей и единиц, а в конце записи числа приписана буква «b» (например: 101b); 3. восьмеричные кодируются аналогично, но в конце записи числа приписана буква «o» (например: 237o); 4. шестнадцатеричные числа для записи используют дополнительные символы «a», «b», «c», «d», «e» и «f», а в конце записи числа приписана буква «h» (например: b2h). Незначащих нулей, лишних пробелов - нет. Все буквы - строчные. Напишите программу, которая наводит порядок - приводит все числа к десятичному виду и записывает в другой файл.
Вот тебе программа по введённому числу получаем в 10-ой системе.
Переделать на файлы большого труда не должно составить.
var
S : String;
Error : Boolean;
N : Byte;
Chislo : Longint;
begin
Write('Введите число : '); ReadLn(S);
Error := False;
{ проверка правильности по последнему символу }
if Not(S[Length(S)] in ['0'..'9', 'b', 'o', 'h']) then Error := True
else begin
Chislo := 0;
{ по последнему символу делаем перевод величин }
case S[Length(S)] of
'0'..'9' : for N := 1 to Length(S) do
if S[N] in ['0'..'9'] then Chislo := Chislo * 10 + Ord(S[N]) - 48
else Error := True;
'b' : for N := 1 to Length(S) - 1 do
if S[N] in ['0', '1'] then Chislo := Chislo * 2 + Ord(S[N]) - 48
else Error := True;
'o' : for N := 1 to Length(S) - 1 do
if S[N] in ['0'..'7'] then Chislo := Chislo * 8 + Ord(S[N]) - 48
else Error := True;
'h' : for N := 1 to Length(S) - 1 do
if S[N] in ['0'..'9'] then Chislo := Chislo * 16 + Ord(S[N]) - 48
else if S[N] in ['A'..'F'] then Chislo := Chislo * 16 + Ord(S[N]) - 55
else if S[N] in ['a'..'f'] then Chislo := Chislo * 16 + Ord(S[N]) - 87
else Error := True;
end;
end;
if Not Error then WriteLn(Chislo)
else WriteLn('Не верно заданное число! ');
end.
Переделать на файлы большого труда не должно составить.
var
S : String;
Error : Boolean;
N : Byte;
Chislo : Longint;
begin
Write('Введите число : '); ReadLn(S);
Error := False;
{ проверка правильности по последнему символу }
if Not(S[Length(S)] in ['0'..'9', 'b', 'o', 'h']) then Error := True
else begin
Chislo := 0;
{ по последнему символу делаем перевод величин }
case S[Length(S)] of
'0'..'9' : for N := 1 to Length(S) do
if S[N] in ['0'..'9'] then Chislo := Chislo * 10 + Ord(S[N]) - 48
else Error := True;
'b' : for N := 1 to Length(S) - 1 do
if S[N] in ['0', '1'] then Chislo := Chislo * 2 + Ord(S[N]) - 48
else Error := True;
'o' : for N := 1 to Length(S) - 1 do
if S[N] in ['0'..'7'] then Chislo := Chislo * 8 + Ord(S[N]) - 48
else Error := True;
'h' : for N := 1 to Length(S) - 1 do
if S[N] in ['0'..'9'] then Chislo := Chislo * 16 + Ord(S[N]) - 48
else if S[N] in ['A'..'F'] then Chislo := Chislo * 16 + Ord(S[N]) - 55
else if S[N] in ['a'..'f'] then Chislo := Chislo * 16 + Ord(S[N]) - 87
else Error := True;
end;
end;
if Not Error then WriteLn(Chislo)
else WriteLn('Не верно заданное число! ');
end.
За такие программы обычно денег просят.
Похожие вопросы
- Как ответ на эту задачу записать в паскале, либо просто в алгоритм?
- Помогите решить задачу на Турбо паскале
- Как перевести число из одной системы исчисления в другую?
- Помогите с переводом в двоичную систему исчисления
- как перевести информацию в двоичную сстему кодирования и шестнадцатиричную систему исчисления
- Помогите решить задачу решение на Паскале
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Напишите мне пожалуйста переводы (см. внутри) из одной системы исчисления в другую!!
- двоичная система исчисления. как там выглядит число 13? и каков принцип вкратце?