Помощь - Поиск - Пользователи - Календарь
Полная версия: Перевод из 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.


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