Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Перевод из 16 в 10 в 8.

Автор: Гость 8.10.2007 2:33

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. не меняя стиля проги.



Автор: мисс_граффити 8.10.2007 2:43

а чем предложенный в FAQ вариант не понравился?

Автор: Гость 8.10.2007 21:35

хоть убейте все просмотрел. не нашел.

Автор: мисс_граффити 8.10.2007 23:03

Правда?
http://forum.pascal.net.ru/index.php?showtopic=4535&st=0&p=38226&#entry38226

Автор: Гость 9.10.2007 1:01


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

я не пойму что там с End. я не могу понять постороени того кода.((

Автор: Гость 9.10.2007 1:04

вот я сделал прогу из 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.


Автор: мисс_граффити 9.10.2007 1:14

можно по аналогии...
а можно из 16 в 8 через 2. алгоритм знаешь?

Автор: Гость 9.10.2007 1:22

мне кажется это будет дольше. а вобще не знаю.

Автор: volvo 9.10.2007 1:26

Здесь глянь:
http://forum.pascal.net.ru/index.php?s=&showtopic=6264&view=findpost&p=46993

Автор: Гость 9.10.2007 1:32

ага там типа можно по аналогии сделать из 16 в 8. тока там из 4 в 2. щас подумаю

Автор: volvo 9.10.2007 1:39

Тот пост, на который я тебе дал ссылку - это HexToOct (16 -> 8), смотри внимательнее

Автор: Гость 9.10.2007 1:40

да я уже понял.

Автор: Гость 9.10.2007 1:46

страно все правильно. тока вконце end не принимает.

Автор: volvo 9.10.2007 1:48

Чего "не принимает"? Там только функции... Покажи основную программу, которую ты написал...

Автор: Гость 9.10.2007 2:27

я пошел спать. сейчас я не понимаю ничего.
как я понял фуекции нада записать в ворядке правильном.
а пос ле begin писать
writeln('cislo v 16);
readln('res');
а в конце перед end тоже самое


Автор: Гость 9.10.2007 22:14

вот что получилось

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.