Új hozzászólás Aktív témák
-
Steelheart
senior tag
Hát, én asszem nem sok értelmét látom a Pascal grafikai részének... de hát mindenkinek a maga dóga, meg perzse az iskoláé, teszem azt.
XFire profile: http://profile.xfire.com/crystalheart ________>>--(O.o)-->________ http://www.youtube.com/watch?v=0NM45lYPb_A _________>>--(X.x)-->_________ http://crystalheart.extra.hu/e107_files/downloads/video/myvid/ggstart_f2_3kbps.avi
-
QuarK
senior tag
Ebben a (már bezárt) totyikban (Bővebben: link) kérdezték (ha jól értelmeztem), hogy lehet negatív kitevővel hatványozni pascalban. Írtam egy kis saját pow() függvényt, ami pozitív, negatív kitevőkkel is jól működik. Hátha a srác idekukkant, vagy bárki másnak kellene
function Power( Base : real; Exponent: integer): real;
var i : integer;
pow : real;
begin
pow := Base;
if ( Abs( Exponent) = 2) then
pow := Base * Base
else if ( Abs( Exponent) = 1) then
pow := Base
else if ( Exponent = 0) then
pow := 1;
else
begin
if ( Exponent > 0) then
begin
for i := 2 to Exponent do
pow := pow * Base;
end
else
begin
for i := -2 downto Exponent do
pow := pow * Base;
end;
end;
if ( Exponent < 0) then
Power := 1 / pow
else
Power := pow;
end; -
Steelheart
senior tag
-
QuarK
senior tag
válasz Steelheart #553 üzenetére
WTF?
mod: Ez így túl tömör... Igazából nem értem, min derülsz ilyen jót...
Így van angolul: x hatványa: power of x...
[Szerkesztve] -
Steelheart
senior tag
Persze, értem, elmondom tehát. Megmutattam öcsémnek, aki igen picinyke, mondhatni semmi programozói tudással rendelkezik, de azért valamicske-néhányocska angol szót tud, és azt hitte, valami angol, szigorú ritmussal írt ódát vagy legalábbis eposzt mutatok neki Hát igen, asszem nem kísérlem meg megtanítani neki a Pascalt, uccse a Boronkayba jön majd tanulni
[Szerkesztve]XFire profile: http://profile.xfire.com/crystalheart ________>>--(O.o)-->________ http://www.youtube.com/watch?v=0NM45lYPb_A _________>>--(X.x)-->_________ http://crystalheart.extra.hu/e107_files/downloads/video/myvid/ggstart_f2_3kbps.avi
-
Dromie
csendes tag
na egy kis pow....aki már matematikát is tanult érteni fogja
function pow(a,b:real):real;
begin
pow:=exp(ln(a)*b);
end;
és kész...nem csak negatívok, törtek, sőt bármely real-ban ábrázolhatóra müködik.....
Üdv -
Rover623
félisten
Ráadásul fiatal lehettél és bohó...és nem kellett optimalizálnod sem...
Ez kb. ugyanazt tudja, ugye...?
function Power( Base : real; Exponent: integer): real;
var i : integer;
pow : real;
begin
if ( Exponent = 0) then
Power := 1;
else
begin
pow := Base;
for i := 2 to Abs(Exponent) do
pow := pow * Base;
if ( Exponent < 0) then
Power := 1 / pow
else
Power := pow;
end;
end;primus inter pares
-
Rover623
félisten
Az sem mindenre megoldás...
Van egy kis projectem...évek óta át kellene írni védett módba (FreePascal lenne a szimpi...), csak tele van erősen hardverközeli cuccokkal...meg nem szabványos megoldásokkal (saját runtime rendszer a Borland helyett)
Minden évben megpróbálkozom az átültetéssel, de amióta fejlesztik azt az izét, még egy normális unitomat nem tudta lefordítani...
Ja...és 142.000 sor...primus inter pares
-
Rover623
félisten
Tényleg...
Fiatal programozópalánták nem akarnak gyakorolni?
Minden jelentkező kaphat 5-10.000 sornyi ínyenc forráskódot (olyanokat látni benne hogy csuda), aztán megpróbálja átgyömöszölni FreePascal-ba...
Én meg majd koordinálom...
Garantált szakmai fejlődés biztosítva...primus inter pares
-
QuarK
senior tag
válasz Rover623 #565 üzenetére
Felőlem jöhet egy két ínyencség... Bár cserébe nem sokat tudok ajánlani... Amikor öcsike ismerkedett az fdisk-kel, akkor a 2001 előtti cuccosaim mind odavesztek, kivéve egy-két dolgot, ami a régi 286-oson megmaradt, nagymamánál... De azért akad: xms, pcx betöltés, max. 256 byte hosszú kulccsal való tömörítés (crytp, decrypt), crc ellenőrzés, planéták térbeli helyzetét kiszámító, majd állatövön elhelyező (aka. horoszkóp készítő) progi...
Jah, és most jön a gonoszkodás Bár ez pascal totyik, azért itt megjelenítem a témához, és szerintem nem nagy cucc átportolni pascalra (bár kell vele bajlódni, az fix)
double pow( double y, double x)
{
typedef union
{
double d;
unsigned u[4];
} DBL;
double z, w, p, p2, q, re;
unsigned ex;
int iz;
DBL *yp, *zp, *wp;
yp = ( DBL*)&y;
if ( yp->d <= 0.0)
y = -y;
z = 0.0;
zp = ( DBL*)&z;
zp->u[3] = yp->u[3] & ~0100017;
iz = ( zp->u[3] >> 4) - 1023;
if (( yp->d - zp->d) == 0.0)
z = ( double)iz;
else
{
yp->u[3] -= ++iz << 4;
yp->d *= 1.4142135623730950488;
p = ( yp->d - 1.0) / ( yp->d + 1.0);
p2 = p * p;
z = p * ( 2.000000000046727 +
p2 * ( 0.666666635059382 +
p2 * ( 0.4000059794795 +
p2 * ( 0.28525381498 +
p2 * 0.2376245609))));
z = z * 1.442695040888634 + ( double)iz - 0.5;
}
z *= x;
w = 0.0;
wp = ( DBL*)&w;
if ( zp->d > 1023.0 || zp->d < -1023.0)
return ( 1E307);
iz = ( int)zp->d;
wp->u[3] += iz + 1023 << 4;
wp->u[3] &= ~0100017;
if (( zp->d -= ( double)iz) == 0.0)
return ( wp->d);
while ( zp->d < 0.0)
{
wp->u[3] -= 1 << 4;
wp->u[3] &= ~0100017;
zp->d++;
}
if ( zp->d >= 0.5)
{
zp->d -= 0.5;
re = 1.41421356237309504880;
}
else
re = 1.0;
p2 = zp->d * zp->d;
p = zp->d * ( 7.2152891511493 + p2 * 0.0576900723731);
q = 20.8189237930062 + p2 ;
zp->d = re * wp->d * ( q + p) / ( q - p);
return(zp->d);
} -
QuarK
senior tag
Azért remélem nem annyira rémisztő...
-
[HUN]Zolee
senior tag
Épp a könyvtárkezérléssel bajlódol, de akövetkező progi sehogyse akar menni
program ch_dir;
uses dos;
var
q : PathStr;
begin
GetDir(0,q);
{$I-}
ChDir(paramstr(1));
{$I+}
if ioresult<>0 then
writeln('Hibás elérési út: ',paramstr(1));
ChDir(paramstr(1));
end.
mindig azt kapom hibaként ha lefuttatom parancssor alatt hogy:
A megadott nevet a rendszer nem ismeri fel belső vagy külső parancsként vagy kötegfáljként.
és ne tok rájönni mi a baj''<[HUN]DrH>valaki mondjon egy tuningolos programot a mivel kocsis képeket tudok tuningoloni.'' https://ferromag.aranyoldalak.hu/
-
Rover623
félisten
válasz [HUN]Zolee #570 üzenetére
Te Zolee!
Lefordítottad egyáltalán...?
Készül ch_dir.exe...?
Amikor a parancssorba beírod hogy ch_dir, akkor abban a könyvtárban állsz ahova az EXE készült vagy legalább az elérési útvonalban van az a könyvtár...?
Merthogy az opre akkor mond ilyet ha nincs a beírt névvel egyező belső parancs, nincs sehol elérhető ilyen nevű EXE és BAT file se...primus inter pares
-
[HUN]Zolee
senior tag
-
Rover623
félisten
válasz [HUN]Zolee #572 üzenetére
Higgy nekem! A hibaüzenet az XP parancsértelmezőjéből jön, és azt jelenti amit leírtam!!!!
Nincs EXE! Vagy nem ott álltál!! Vagy elütötted az EXE nevét...!!!!
P.S.:
program ch_dir;
uses dos;
var
q : PathStr;
begin
GetDir(0,q);Minek kérdezed le? Nem használod sehol az eredményt...
{$I-}
ChDir(paramstr(1));
{$I+}
if ioresult<>0 then
writeln('Hibás elérési út: ',paramstr(1));
ChDir(paramstr(1));Hiba! Ha az előbb hibás volt a path, akkor most is! Mivel itt már visszakapcsoltad a hibafigyelést, IO hibával el fog szállni!
end.
[Szerkesztve]
[Szerkesztve]primus inter pares
-
[HUN]Zolee
senior tag
válasz Rover623 #573 üzenetére
ok kösz, majd otthon megnézem mégeccer
amúgy ez a progi egy példaprogram és azt másoltam be csak ott nem a volt paraméteres megadás, és azt hittemhogy ott rontottam el.''<[HUN]DrH>valaki mondjon egy tuningolos programot a mivel kocsis képeket tudok tuningoloni.'' https://ferromag.aranyoldalak.hu/
-
gErYoN
tag
Ez lenne a kód:
program gyokketto;
{$X+}
uses crt;
var ak,fk,k:real; {ak=alsókorlát, fk=felsőkorlát, k pedig az aktuális szám}
begin
clrscr;
ak:=1;
fk:=2;
k:=(ak+fk)/2;
repeat
if sqr(k)>2 then fk:=k
else ak:=k;
k:=(ak+fk)/2;
until abs(fk-ak)<0.000001;
writeln (k);
readln;
end.
Szal ez gondolom nem olyan nagy szám, de kérdésem, hogy a 0.000001 helyére hogyan lehetne egy bekért számot felhasználni úgy hogy negatív egész kitevőjűs hatványa legyen a határ. Azt nem tudom, hogy hogy kell hatványozni a pascalban negatív kitevővel. Amúgy a cuccot egy függvénybe szeretném megcsinálni, csak nem tom, hogy kell hatványozni.
Milyen fordítóidirektíva a {$N+/-}
Somebody help! -
Ziby
csendes tag
Látom hogy ide írhatnak egészen kezdők is.Még én is a pascalt nyomom.Így Nekem is lenne gy kérdésem. A kiiratásal lenne gondom. mivel megakarom kerülni a 10h-s dosos megszakitás ''jótékony hatását'' direkt módon(aszthiszm) írok a képernyőre. Már egyszer működött de már újra nem sikerül mikor ugyan úgy irok:
memw[$b800:2]:=$F3F;
és nem a legelő karakterre ír hanem a másodikre és ha növelem egyel a memória címét akkor többet lép egy karakternélKezdő vagyok ne üssetek
-
Rover623
félisten
és nem a legelő karakterre ír hanem a másodikre
1. Hát mer' a képernyő eleje a 0 offseten van teljesen ''értelmetlen'' módon
és ha növelem egyel a memória címét akkor többet lép egy karakternél
Mert kettővel kell növelni, mivel a képernyő egy karaktere 2 byte-ot foglal el ugyebár (karakter kódja és attribútuma)...
P.S.:
Látom hogy ide írhatnak egészen kezdők is.Még én is a pascalt nyomom
Még én is a pascalt nyomom. Még szerencse hogy én is írhatok ide...
[Szerkesztve]primus inter pares
-
Ziby
csendes tag
Most nem értem egyszer már ment úgy hogy egyel növeltem a címet az eltolás marad 2-es mindig. De az képernyő buffer a $B800-n kezdődik. Így volt írva (találtam is rá egy példát) d. DE ha 2vel emelem is olyanokat ugrik mitha tab-ot írnék neki??
Kezdő vagyok ne üssetek
-
Dromie
csendes tag
nos.....a képernyő buffer a $b800:0 -n kezdődik.
és minden karakterhez 2 byte tartozik az első a karakter ascii kódja, a másik a színe (felső byte háttér szín/alsó byte betűszín) vagy fordítva
ergó a bal felső karakter ascii kódja a $b800:0 -n lesz, a színe a $b800:1 -en...
var i:byte;
begin
for i:=0 to 10 do
mem[$b800:i*2]:=ord('a');
end.
ez ha minden jol megy akkor 10 db a betut ir ki......
[Szerkesztve] -
Ziby
csendes tag
-
-
Dromie
csendes tag
Egy kis Dos alapismeret.
a $B800:0 a memória cím. ennek a $B800 része a Szegmens cím, és a 0 az offszet (eltolás cím).
és mivel a régi valós üzemmódban a memória címzés csak 20 bites volt ezért a
x+1:y cím ugyanoda mutat mint az x:y+16 (ezért van az hogy a főszegmensek segmens címének utolsó byte-ja (utolsó 2 karaktere) 0)
a fene enné meg a kettőspont Y -t.....a 20 bit egy kicsit sántít de az indoklás az igaz...
[Szerkesztve] -
Rover623
félisten
Egyszerűen...
Eldugod a képernyőn kívülre...
Mondjuk a 25. sorba, ha 80x25-ben vagy...
Procedure WinDefCursor ( Start, WEnd : Byte );
Var
Regs : Registers;
Begin
With Regs Do Begin
AH := $01;
(*
AL := VideoInfo^. OrigModeAL; { a rossz AMI es AST BIOS-ok miatt !! }
*)
CL := WEnd;
CH := Start;
End; {with}
Intr ($10, Regs);
End; {WinDefCursor}
Procedure SetCursorPos (Col, Line: Byte);
Var
Regs : Registers;
Begin
With Regs Do Begin
AH := $02;
BH := $00;
DL := Col;
DH := Line;
End; {with}
Intr ($10, Regs);
End; { SetCurPos }
Procedure WinHideCursor;
Begin
If BIOSOutput Then Begin
WinDefCursor (0, 32); {elcsesszük a méretét}
End{with}
Else Begin
SetCursorPos (0, _NumLine);{_NumLine a képernyő sorainak száma}
End; {else}
End; {WinHideCursor}
[Szerkesztve]primus inter pares
-
Ziby
csendes tag
Nem nem.
Nem tudod fogalalmazni
Grafikus unit használatálnál a pascalban ha bekapcsolod a kulzort. Mikore egy gombot csinálsz ez pl:Téglalap. Rámutatsz a téglelpra és ügye hogy ne dzsidzsáza össze a kurzol mindig újra tajzoltatom és az egér kurzol felett van a vonal Nem tudom az egérkuzort előtrbe hozni???Kezdő vagyok ne üssetek
-
-
Darth_Revan
veterán
Sziasztok!
Kaptam még múlt héten progból házit,hogy 1234-es számot címletező algoritmussal írassam ki...végülis a léyneg az lenne,hgoy címletező algoritmust alkalmazzunk 1 példán,ezt a számot csak én talátlam ki) 1 házit már beadtam,de azt nem fogadta el,emrt khm..túl sok hiba volt benne Tudna nekem valaki segíteni? Azt se tudom mi az a címletező algoritmus Ha valaki írna nekem 1 olyat,azt megköszönném! -
b14
senior tag
válasz Darth_Revan #596 üzenetére
1. osztály, de régen volt: 1234: egy darab eezreees, két daraaab szááázas, háárooom daraaaab tííízes és nééégy daraab eeegyees. Legabááis mi igy tanultuk annak idején.
Ha valaki megírja helyetted, akkor sose tudsz majd progzani, de ha segítséget kérsz, akkor szívesen segít bárki (szerintem), ha megíros, az a legjobb, és ha sok benne továbbra is a hiba, akkor ki fogja valaki neked javítani.
Mondhatod, hogy egy nagy hülye vagyok, de ez a tapasztalat (már amennyi van), merő jó szándélkból mondtam ezt.
Na és most megírom.
Szerk: ha meguntad a próbálkozást, akkor ide is berakom a progit.
[Szerkesztve]''...de a konfigjából kiindulva, nem hiszem, hogy 40 éves családos ember lenne...'' -- by Slax