Anonymní profil Krychlik – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Krychlik – Programujte.comAnonymní profil Krychlik – Programujte.com

 

Příspěvky odeslané z IP adresy 80.251.250.–

Krychlik
Delphi › komprimace stringu
25. 3. 2009   #97903

Pokud to jsou jenom cisla tak jde StrToInt64 coz to zmensi na 8 bytove cislo... pokud nutne chces 10 znakovy string tak kazdy byte preved na char a to spoj + 2 prazdne znaky.

Krychlik
Pascal › Převod mezi soutavami
8. 10. 2008   #86781

Omlouvam se za mirnou zmatecnost prvniho vysvetleni.

To KIIV : Ano, cislo 123 v desitkove je skutecne 123, proto do desitkove nemusis z desitkove prevadet. A jak poznas kolikrat pri prevodu z obecne do 10- bud jak napsal Mircosoft umazavat, nebo jeste jednodusej- kdyz je vstup string tak vstup[0] je pocet znaku- to si uloz do promene a pak cyklus s "for...... downto 1" budes nacitat odkonce az po 1 coz je prvni znak vstupu.

Krychlik
Pascal › Převod mezi soutavami
7. 10. 2008   #86696

To lotrman :
Urcite vis jak funguje 10kova- 5641 je 5*10E3+6*10E2+4*10E1+1*10E0 a podobne funguje i obecna- odzadu se zvetsuji mocniny obecneho cisla a ty se nasobi hodnotou v danem miste. tzn 421 v 5kove je 4*5E3+2*5E2+1*5E0. Tak pri prevodu z n do desitkove staci jit odzadu a pokazde znak vynasobit n(to je zakladni cislo te soustavy, prvni bude 1 protoze nE0 je 1), n vynasobit n (posunujes se na dalsi mocninu), pricist si to k vyslednemu cislu a toto delat tolikrat kolik ma vstup znaku(ve strungu je na 0 miste pocet znaku).tak dostanes cislo v 10kove.
Prevod z 10kove do n je mnohem slozitejsi na pochopeni- musis jit odzadu a sbirat zbytky po deleni(=MOD) nkem, ty pridavat na konec vystupu(ten ted musi byt string), a vstup delit nkem (toto je docela slozite na pochopeni) dokud neni vstup 0.
Postup co sem napsal funguje jenom pro obecne soustavy do 9, pro vetsi si musis udelat array znaku (protoze 5*D nejde) a s tema pocitat.
Tady je cast kodu prevodu z 10 do n, hlavne cast mezi repat a until. Nesnaz se to jenom skopirovat, protoze by ti to stejne neslo, je to psane v delphi,ale pro pochopeni zakladu to staci.



{doceho, x a vstup jsou celociselne, vystup1 je string}
doceho:=StrToInt(Edit3.Text);
vstup:=StrToInt(Edit1.Text);
vystup1:='';
repeat
x:=vstup mod doceho;
vystup1:=Inttostr(x)+vystup1;
vstup:=vstup div doceho;
until (vstup=0);
Edit2.Text:=vystup1;

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý