Текущий архив: 2003.11.27;
Скачать: CL | DM;
ВнизПеревод целого р- ичного числа (2<= p<= q) в десятичную систему с Найти похожие ветки
← →
Лена (2003-11-16 20:24) [0]Как выполнить перевод целого р- ичного числа (2<= p<= q) в десятичную систему счисления (с использованием схемы Горнера вычисления полинома).
пожалуйста помогите !! надо на pascale сделать а я в этом не смыслю, хоть намек дайте что да как
← →
Лена (2003-11-16 20:33) [1]неучто никто не может помочь решить задачку первого курса ? :(
← →
Лена (2003-11-16 20:37) [2]прощу вас пожалуйста помогите .
или напишите почему не можете помочь
← →
Alexious (2003-11-16 20:48) [3]C помощью схемы Горнера я незнаю как. Да и вопрос не очень понял
Если вопрос идет о переводах систем исчисления то помочь могу
← →
Лена (2003-11-16 20:50) [4]да вопрос про системы счисления
сейчас я вариант покажу кака я сделала, только мне кажется неправильно
← →
Лена (2003-11-16 20:51) [5]
uses crt;
var
chislo_mas:array[1..10] of integer;
p,i,z,otvet:integer;
chislo:string;
{// *STRING type --> INTEGER type*}
function StrToInt(str:string):integer;
var int,code :integer;
begin
Val(str, int, Code);
if code = 1 then WriteLN("! ERROR !... v funkcii StrToInt");
StrToInt:=int;
end;
{*STRING type --> INTEGER type* //}
{// *INTEGER type --> STRING type*}
function IntToStr(I: Integer): String;
var
S: string[11];
begin
Str(I, S);
IntToStr := S;
end;
{*INTEGER type --> STRING type* //}
{// *vozvodit chislo v stepen, rabotaet TOLKO S POLOSHITELNIMI chislami*}
function stepen(chislo,st:integer):integer;
var
i,otvet:integer;
begin
otvet:=1;
If (st>0)or(st<0) then
For i:=1 to st do
begin
otvet:=otvet*chislo;
end;
stepen := otvet;
end;
{*vozvodit chislo v stepen, rabotaet TOLKO S POLOSHITELNIMI chislami* //}
Begin
Write("vvedite chislo >> "); ReadLN(chislo);
Write("v kakoy SS vvedenoe chislo ? >> "); ReadLN(p);
z:=Length(chislo)+1;
For i:=1 to Length(chislo) do
begin
If (chislo[i]>="0")and(chislo[i]<="9") then chislo_mas[i]:=StrToInt(chislo[i])
else
begin
If (chislo[i]="A") then chislo_mas[i]:=10;
If (chislo[i]="B") then chislo_mas[i]:=11;
If (chislo[i]="C") then chislo_mas[i]:=12;
If (chislo[i]="D") then chislo_mas[i]:=13;
If (chislo[i]="E") then chislo_mas[i]:=14;
If (chislo[i]="F") then chislo_mas[i]:=15;
end;
end;
For i:=(Length(chislo)) downto 1 do
begin
WriteLN(chislo_mas[z-i],"*",p,"^",i-1);
otvet:=otvet+chislo_mas[z-i]*stepen(p,i-1);
end;
WriteLN(otvet);
ReadLN;
End.
← →
Лена (2003-11-16 21:01) [6]ктонить проверте плиз работает или нет программа
← →
Alexious (2003-11-16 21:10) [7]Ты делаешь на чистом паскале?
Есть встроеная функцияHexToInt
Для 16
Вот для двоичной
procedure bin2dec(bin: string): longint;
var
J : longint;
Error: boolean;
dec : longint;
begin
dec := 0;
Error := false;
for J := 1 TO Length(bin) DO
begin
if (bin[J] <>"0") and (bin[J] <>"1") then Error := true;
if bin[J] = "1" then dec := dec + (1 shl (Length(bin) - J));
end;
if Error then bin2dec := 0
else bin2dec := dec;
end;
И для восьмеричной
procedure OCT2dec(OCT: string): longint;
CONST
OCTSet: SET OF CHAR = ["0".."7"];
var
J : longint;
Error: boolean;
dec : longint;
begin
dec := 0;
Error := false;
for J := 1 TO Length(OCT) DO
begin
if NOT (UpCase(OCT[J]) iN OCTSet) then Error := true;
dec := dec + (Ord(OCT[J]) - 48) shl ((Length(OCT) - J) * 3);
{ 8^N = 2^(N * 3) }
{ N shl ((Length(OCT) - J) * 3) = N * 8^(Length(OCT) - J) }
end;
if Error then OCT2dec := 0
else OCT2dec := dec;
end;
Так делал я в своё время. Все работает
← →
Лена (2003-11-16 21:18) [8]да я на чистом паскале ))
причем заметь у меня в любой от двоичной до 16ричной
сейчас проверила прогу свою вродебы правильно рабоатет ))
********
кстати ты тоже можешь запустиь эту прогу в дельфи достаточно подключить модуль DOS вродебы
← →
Alexious (2003-11-16 21:29) [9]Знаю сейчас пробую.
Тебе надо из любой системы чтоли? Если да то код сейчас кину
← →
Лена (2003-11-16 21:30) [10]да из любой надо
кинь пожалуйста
← →
Alexious (2003-11-16 21:48) [11]function perevod(s1:integer;kakaiasistema:integer;vkakuusistemu:integer):string;
var i,t,k,flag: integer;
itog, e: longint;
s:string;
begin
s:=inttostr(s1);
k:=10;
e:=1;
itog:=0;
for i:=length(s) downto 1 do begin
if ord(s[i])<60 then t:=ord(s[i]) - ord("0") else t:=Ord(s[i])-ord("A")+10;
itog:=itog+e*t;
e:=e*k;
end;
flag:=0;
s:="";
repeat
e:=itog mod vkakuusistemu;
itog:=itog div vkakuusistemu;
if itog=0 then flag:=1;
if e>=10 then s:=chr(e+ord("A")-kakaiasistema)+s else s:=chr(e+ord("0"))+s;
until flag=1;
result:=s;
← →
Лена (2003-11-16 21:52) [12]Огромнейшее спасибочки ! :)
чтоб у тебя все шло как по маслу и в ближаёшее время ты работал в майкрасофт и получал 100 000$ /месяц
← →
Alexious (2003-11-16 22:15) [13]ага спасибо.
Пиши если что.
Страницы: 1 вся ветка
Текущий архив: 2003.11.27;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.008 c