Помощь - Поиск - Пользователи - Календарь
Полная версия: Перевод из 16 в 10 в 8.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость
Program My;
var a16,b16,c16,I,summ1,len1,step1,a8,b8,c8,len2,summ2,step2:integer;
tem1,tem2,s:string;

begin
writeln('Vvedite chislo v 16-richnoi sisteme:');
read(a16);
str(a16,tem1);
len1:=length(tem1);
step1:=1;
b16:=a16 mod 10;
a16:=a16 div 10;
c16:=b16;
summ1:= summ1+c16;
step1:=step1*16;
for I:=2 to len1 do begin
b16:=a16 mod 10;
a16:=a16 div 10;
c16:=b16*step1;
summ1:=summ1+c16;
step1:=step1*16;
end;
writeln('Chislo v 10-icnoi sisteme: ',summ1);
readln;


step2:=1;
str(summ1,tem2);
len2:=length(tem2);
a8:=summ1;
c8:=0;
for I:=1 to len2+1 do begin
b8:=a8 mod 8;
a8:=a8 div 8;
c8:=c8+b8*step2;
step2:=step2*10;
end;
writeln('Chislo v 8-richnoi systeme: ',c8);
readln;
end.


вот тока я не знаю как задать буквам A-F значение 10-15. не меняя стиля проги.


мисс_граффити
а чем предложенный в FAQ вариант не понравился?
Гость
хоть убейте все просмотрел. не нашел.
мисс_граффити
Правда?
Общие вопросы по математике.
Гость

Цитата
Правда?Общие вопросы по математике.

я не пойму что там с End. я не могу понять постороени того кода.((
Гость
вот я сделал прогу из 16 в 10. но это как то не по той схеме что вы предлагаете. тока теперь у меня запар с переводом в 8 систему..

program iz16v10;
uses crt;
var n, x16,step: integer;
x10 : LongInt;
s : string;
begin
clrscr;
writeln('Vvedite 16-chnoe chislo:');
readln(s);
n:=0;
x10:=0;
while n<length(s) do
begin
n:=n+1;
case s[n] of
'0'..'9': val(s[n],x16,step);
'a','A': x16:=10;
'b','B': x16:=11;
'c','C': x16:=12;
'd','D': x16:=13;
'e','E': x16:=14;
'f','F': x16:=15;
else begin
writeln('Vvedeno ne 16-chnoe chislo!');
readln;
exit;
end;
end;
x10:=x10+x16*round(exp((length(s)-n)*ln(16)));
end;
writeln('10-chnaya sistema ', x10);
readln;
end.

мисс_граффити
можно по аналогии...
а можно из 16 в 8 через 2. алгоритм знаешь?
Гость
мне кажется это будет дольше. а вобще не знаю.
volvo
Здесь глянь:
Системы счисления
Гость
ага там типа можно по аналогии сделать из 16 в 8. тока там из 4 в 2. щас подумаю
volvo
Тот пост, на который я тебе дал ссылку - это HexToOct (16 -> 8), смотри внимательнее
Гость
да я уже понял.
Гость
страно все правильно. тока вконце end не принимает.
volvo
Чего "не принимает"? Там только функции... Покажи основную программу, которую ты написал...
Гость
я пошел спать. сейчас я не понимаю ничего.
как я понял фуекции нада записать в ворядке правильном.
а пос ле begin писать
writeln('cislo v 16);
readln('res');
а в конце перед end тоже самое

Гость
вот что получилось
program iz16v10;
uses crt;
var n, x16,step: integer;
x10 : LongInt;
s ,x8: string;Numeral:string[1];
begin
clrscr;
writeln('Vvedite 16-chnoe chislo:');
readln(s);
n:=0;
x10:=0;
while n<length(s) do
begin
n:=n+1;
case s[n] of
'0'..'9': val(s[n],x16,step);
'a','A': x16:=10;
'b','B': x16:=11;
'c','C': x16:=12;
'd','D': x16:=13;
'e','E': x16:=14;
'f','F': x16:=15;
else begin
writeln('Vvedeno ne 16-chnoe chislo!');
readln;
exit;
end;
end;
x10:=x10+x16*round(exp((length(s)-n)*ln(16)));
end;
writeln('Chislo v 10-chnoi systeme:', x10);
While x10>0 Do
begin
str(x10 mod 8,Numeral);
x10:=x10 div 8;
x8:=Numeral+x8;
end;
Writeln('Chislo v 2-chnoi systeme:', x8);
readln;
end.


Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.