Паскаль. Можно ли как-то модернизировать программу (именно модернизировать), чтобы можно...

0 голосов
145 просмотров

Паскаль. Можно ли как-то модернизировать программу (именно модернизировать), чтобы можно было работать и с 10+ СС? Например, вводишь число 1F (в 16 СС), программа в строке находит F, приравнивает её к 15, потом уже работает с этим числом. Пробовал, но успехом не увенчалось. Пожалуйста, постарайтесь расписать подробно.


image

Информатика (1.2k баллов) | 145 просмотров
0

Желательно бы текст программы получить, а не картинку.

0

var x:string;t:real;a,i,n,q:integer;beginreadln(x);readln(q);t:=0;n:=length(x);for i:=1 to n dobegina:=strtoint(x[i]);n:=n-1;t:=t+a*power(q,n);end;writeln(t);end.

0

Как-то хочется не модернизировать, а переписать всё. Но можно и модернизировать. Какая (max) может быть система счисления?

0

Минимум 16 нужна, но можно и больше, если всё позволяет.

0

Хочется модернизацию, потому что я её сам писал. А найти в интернете готовый вариант любой же может...

Дан 1 ответ
0 голосов
Правильный ответ

Можно сделать, например, так (но это всё равно очень-очень корявый вариант):
const s='ABCDEF';
var x:string;
t:real;
a,i,n,q:integer;
begin
readln(x);
readln(q);
t:=0;
n:=length(x);
for i:=1 to n do
begin
 case x[i] of
  '0'..'9' : a:=strtoint(x[i]);
  'A'..'F' : a:=pos(x[i],s)+9;
 end; 
n:=n-1;
t:=t+a*power(q,n);
end;
writeln(t);
end.

(194k баллов)
0

Если же делать по-другому, то там же абсолютно всё переписывать? Или останется что-то похожее?

0

Похожее, конечно, останется. )

0

Как бы меня и такой вариант устраивает. Но хотелось бы понять, что делает a:=pos(x[i],s)+9.

0

pos(s1,s2) - определяет номер позиции подстроки s1 в строке s2. В нашем случае - определяет порядковый номер буквы в строке s. Можно это, конечно, и через коды символов делать, но, вроде бы, так нагляднее.

0

Понял, спасибо. А можно ли сделать больше, чем 36 СС? (0-9 + 26 букв алфавита = 36 СС)

0

Можно и больше. Надо только определить - какие символы использовать после Z.

0

А можно их как-то использовать по типу Excel? AA, AB, AC, AD, ..., ZZ, AAA, AAB, ...

0

А как Вы будете распознавать, например, AA? Это две цифры "A" или одна цифра "АА"?

0

А, ну да, тут я не подумал. Всё, вопросов больше нет. Спасибо за уделённое время.

0

:)