Hirdetés
- iPhone topik
- Netfone
- Megdöntheti az iPhone 4 rekordját az iPhone 17
- Google Pixel topik
- Samsung Galaxy A54 - türelemjáték
- Apple iPhone 13 - hízott, de jól áll neki!
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Xiaomi 14 - párátlanul jó lehetne
- Honor 400 Pro - Gép a képben
- Milyen okostelefont vegyek?
Új hozzászólás Aktív témák
-
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] -
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!
-
-
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 vonalNem tudom az egérkuzort előtrbe hozni???
-
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] -
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] -
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
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??
-
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] -
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él -
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! -
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] -
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... -
[HUN]Zolee
őstag
É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 -
QuarK
senior tag
Azért remélem nem annyira rémisztő...
-
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ásBá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);
} -
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... -
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... -
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; -
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 -
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] -
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] -
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
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.
-
Grocky
csendes tag
Hello Mindenkinek!
Egy kis segítségre lenne szükségem. Sakk-imitációt kellene írnom (csak a figurákat kell felrakni a helyükre), de akadt pár problémám:
- Ha a táblát feliratozva akarom, akkor elszürkül a képernyő, és semmi nem látszik rajta, csak a halványszürke mezők. (Fekete és fehér mezők helyett ui. világos- és sötétszürke színt használtam, hogy a fekete, ill. fehér figura is mindig jól látható legyen.)
- Ha figurát is teszek a mezőkre, hogy tudom azt megoldani, hogy a fehér figura mindig fehér legyen (világosszürke 'fehér' mezőn fekete körvonallal) és fekete pedig fekete (sötétszürke 'fekete' mezőn fehér körvonallal)? Pointer használattal kellene megoldanom. Az addig rendben van, hogy használom az XORPUT-t, ANDPUT-t stb., de nem működik úgy, ahogy szeretném. Az XORPUT jó, ha más színűre akarom tenni, de egyébként nem. Az ANDPUT a keretet is bemásolja (COPYPUT-nál és ORPUT-nál is). Ráadásul akármelyiket használom, nem marad fehér vagy fekete a figura, pedig azok színét nem sötét- vagy világosszürkén szeretném megjeleníteni.
Előre is köszönöm a segítségeteket! -
QuarK
senior tag
Próbáld meg ezt: Bővebben: link
Nekem szépen feltelepült, és nem akadékoskodik. Ha még mindig kiabál értük, akkor keress rá a merevlemezeden autexec.nt és config.nt fájlokra, és ha azok nincsenek a windows\system32 könyvtárban, tedd őket oda.
Ha nem találod őket, akkor íme:
autoexec.nt:
@echo off
lh %SystemRoot%\system32\mscdexnt.exe
lh %SystemRoot%\system32\redir
lh %SystemRoot%\system32\dosx
SET BLASTER=A220 I5 D1 P330 T3
config.nt:
dos=high, umb
device=%SystemRoot%\system32\himem.sys
files=40
Ha így sem jó, akkor passz piros. -
e.vid
senior tag
Sziasztok!
Telepíteni szeretném a Turbo Pascal 7.0 de nem sikerül . Op.r. WinXP SP1
Nem találja (?) az autoexec.bat-ot és a config.sys-t ?
Tudna valaki segíteni ? Előre is köszönöm. -
VladimirR
nagyúr
tipusok:
text -> szoveges file, sorokat tudunk bele ini/olvasni (irni lehet stringet is, akar tobbet is egy sorba)
file -> tipus nelkuli file, blokkokat irunk/olvasunk
file of xxx -> tipusos file, ahol xxx lehet szinte barmely tipus
eljarasok:
assign(var f, name:string)
f allomany tipusu valtozohoz (logikai allomanyhoz) hozzarendeli name fizikai allomanyt. a logikai allomanyra vonatkozo minden tovabbi muvelet name fizikai allomanyra vonatkozik. a kapcsolat a program vegeig tart, hacsak egy ujabb assign eljarassal nem rendelunk a logikai valtozohoz egy masik fizikai allomanyt. name tartalmazhat teljes utvonalleirast is, hossza maximalisan 79 karakter lehet. name azonosithat dos periferiat is: con, lpt1 (=prn), lpt2, lpt3, com1 (=aux), com2, nul. ha name ures karakterlanc, az eljaras f-hez a con periferiat rendeli
*nyitott allomanyra nem szabad hasznalni
append(var f: text) (A kettőspont és a ''t'' közé nem kell space, de a fórummotor smiley-vá alakította, ezért tettem. Bash)
megnyitja irasra az f szoveges allomanyt es az allomany aktualis poziciojat az allomany vegere allitja - a kovetkezo irasok bovitik az allomanyt. ha az allomany nyitva volt, akkor az eljaras bezarja, majd ujranyitja azt. amennyiben az utolso 128 bajtos blokkban volt allomanyvegjel (^Z, vagyis #26 karakter), akkor az aktualis pozicio az elso ilyenre all. f allomanybaltozot elozoleg az assign eljarassal egy letrezo fizikai allopmanyhoz kell rendelni. ha f-hez az ures karakterlancot rendeljuk, akkor az iras a szabvanyos b/k eszkozre (con) tortenik. $I- eseten az ioresult figgvennyel a nyitas eredmenye lekerdezheto
reset(var f [ :file; recsize:word)
megnyitja az assign eljarassal elozoleg f-hez rendelt, letezo fizikai allomanyt es az allomanymutatot az allomany elejere allitja (filepos(f)=0). ha az allomany ures (0 hosszusagu, illetve szoveges allomany eseten az elso karakter a ^Z), akkor eof(f)=true. ha f szoveges tipusu, akkor csak olvasni lehet az allomanybol, mig tipusos es tipus nelkuli allomanyok irhatoak es olvashatoak is lesznek az eljaras hivasa utan. tipusnelkuli allomanyok eseteben megadhato a rekordmneret is recsize parameterben, ha nem adjuk, meg, 128bajt lesz. ha f allomanyvaltozohoz ures karakterlancot rendeltunk, akkor az input allomanyt nyitja meg - ez az inicializalo reszben automatikusan megtortenik a program inditasakor. ha az eljaras nyitott allomanyra alkalmazzuk, akkor azt automatikusan lezarja az ujranyitas elott. $I- eseten az ioresult fuggvennyel a nyitas eredmenyessege lekerdezheto
rewrite(var f [ :file; recsize:word)
ha az assign eljarassal elozoleg f allomanyvaltozohoz rendelt fizikai allomany meg nem letezik, letrehozza azt es szoveges allomany eseteben irasra, tipusos es tipus nelkuli allomany eseteben irsra es olvasasra megnyitja. ha a fizikai allomany mar letezik, akkor elobb torli annak tartalmat. az allomanymutato az allomany elejere all (filepos(f)=0) es az allomany ures lesz (filesize(f)=0). ha f allomanyvaltozohoz ures karakterlancot rendelunk, akkor az output allomanyt nyitja meg irasra - az az inicaializalo reszben automatikusan megtortenik a program indulasakor. tipus nelkuli allaomanyok eseten a recsize parameterret a rekordmeret adhato meg, egyebkent az 128 bajt lesz. $I- eseten az ioresult fuggvennyel a nyitas eredmenyessege lekerdezheto
close(var f) lezarja az elozoleg reset, rewrite, vagy append eljarassal; megnyitott f logikai allomany. lezaras elott meg a pufferben maradt adatokat kiirja az allomanyba, a katalogust aktualizalja. vegul felszabaditja az allomanyhoz tartozo kezeloszamot (dos handle) tovabbi felhasznalas celjara. a muvelet eredmenyessege $I- mellett az ioresult fugvennyel lekerdezheto
(volna meg legalabb ennyi, de most lusta vagyok begepelni, ha keritek beirom a tobbit is)
forras: Angster Erzsébet - Kertész Lászóo: Turbo Pascal 6.0 'A' .. 'Z' -
Gyuri16
senior tag
program filekezeles;
var
valami: text;
begin
assign(valami,'c:/file.txt');
reset(valami);
write(valami,'amit bele akarsz irni');
close(valami);
end.
assign - megnevezi
reset - megnyitja
write/read - ir/olvas belole
close - becsukja
reset es rewrite kozt annyi a kulonbseg, hogy reset megnyitja a file, es leteznie kell, rewrite meg letrehozza/kitorli. read, write mukodik, persze a readln, writeln is.
[Szerkesztve] -
b14
senior tag
Egyebkent meg tok erdekes, hogy ez a division by zero problema mindig visszater.
-
_thomas_
tag
hi!
ebben a pldában egy TButton komponenst mentünk ki háttártárra, a test.dat fileba.
procedure save();
var
f : TFileStream;
begin
try
f := TFileStream.Create('c:\test.dat',fmCreate);
f.Seek(0,500);
//komponenst mentünk ki vinyóra a TButton helyett természetesen a nevét kell megadni!
f.WriteComponent(TButton);
finally
f.Free;
end;
end;
[Szerkesztve] -
lamadou
senior tag
Hello!
Azt szeretném kérni, hogy írjatok néhány parancsot a fájlkezelésre.(tehát, hogy tudok létrehozni egy ''külső'' fájlt, azt, hogy tudom olvasni utána, módosítani, ilyesmi)
Köszi! -
izoli
csendes tag
válasz
Wasmacsó #523 üzenetére
Üdv!
Nézd meg ezt! Bővebben: link -
Wasmacsó
csendes tag
aholy everybody!
Help nekem pls!!!!!
van egy tp prg-m grafikáról szól, van egy kis gáz, azaz a legnagyobb gáz, ami felmerülhet:
Division by Zero
Azt nem értem, hogy hol van itt osztás nullával, vagy ahhoz hasonló???? Mert más hiba meg nem lehet
na, szal itt a kód, előre is thx!
uses graph, crt;
var gvezerlo, gmod, hibakod, okey:integer;
var texting:string;
var valasz:char;
procedure szinscr;
begin
setcolor(okey);
OutTextXY(GetMaxX div random(10), GetMaxY div random(10), texting);
readln;
end;
procedure textsize;
begin
SetUserCharSize(15 div 2, 16 div 3, 17 div 4, 26 div 3);
setcolor(okey);
OutTextXY(GetMaxX div 2, GetMAxY div 2, texting);
end;
procedure cscrs;
begin
setcolor(okey);
OutTextXY(GetMaxX div 2, GetMAxY div 2, texting);
sound(600);
end;
begin
writeln('Kerem a szint:');
readln(okey);
writeln('Kerem a szoveget:');
readln(texting);
detectgraph(gvezerlo, gmod);
initgraph(gvezerlo, gmod, 'c:\tp\bgi');
hibakod:=graphresult;
setcolor(okey);
SetTextStyle(DefaultFont, HorizDir, 3);
SetTextJustify(CenterText, CenterText);
SetUserCharSize(5, 6, 5, 6);
OutTextXY(GetMaxX div 2, GetMaxY div 2, texting);
writeln('K‚perny‹v‚di inicializ l sa');
writeln('V laszt si lehet‹s‚gek:');
writeln('a: A sz”veg szˇn‚nek a megv ltoztat sa');
writeln('b: A sz”veg m‚ret‚nek a megv ltoztat sa');
writeln('c: A sz”veg szˇn‚nek a megv ltoztat sa hanggal');
readln(valasz);
case valasz of
'a', 'A' : szinscr;
'b', 'B' : textsize;
'c', 'C' : cscrs;
end;
readln;
closegraph;
end.
Amúgy szerintem tanuljatok VB-t vagy Delphit, annak van értelme, a c++ nem rossz, de amúgy utálom. A TP - vel csak azér foglalkozok, mert unatkozom
Csá -
Gyuri16
senior tag
tudna nekem valaki adni egy nem tul komplikalt peldat backtrackingre? Amit idaig megcsinaltam: labirintusban (ahol van fal meg nem fal) egyik helyrol masikra hany lepesre lehet eljutni, aztan, hogy hogyan lehet egy sakktablara (max 6*6osra, mer aztan sokaig szamolja) letenni annyi damat ahany oszlopja/sorja van, ugy hogy ne ussek egymast, illetve olyat meg, hogy hogyan tud egy lo (sakkbabu, amely L alakban kozlekedik) korbeugralni egy sakktablat.
szoval valaki tudna hasonlo peldat adni?
azert kellene, mert csutortokon lesz egy verseny, es az iskolai forduloban volt egy ilyen pelda (ott meg nem tudtam), es tanar szerint hasonlo lesz most is, szoval kellene gyakorolni.
koszi a segitseget. -
Sianis
addikt
Sziasztok!
Hatalmas bajom van. Hétfőn be kell adnom ezt a programot. Tegnap tökéletesen ment TP7 alatt, ma változatlan formában kiakad Free Pascal alatt és ez alatt kell beadni.
A gond a Keresés és a Módosítás pont alatt van. Néha lazán elmegy TP7 alatt, néha meg módosítás alatt disk read hibát ad.
A két fájl:
Alap.pas Bővebben: link
Magellan.pas-ez a unit Bővebben: link
Légyszives teszteljétek le mindkettő alatt, mert lehet az én gépemmel van a baj, és feleslegesen félek. Ha lehet akkor javítsátok amit lehet. Előre is köszönöm...
UI: CRT unit nincs benne, mert Linux alatt nem szereti. Szóval ne lepődetek, meg, hogy fapados.
Hálásan köszönök bármifajta segítséget! -
WN31RD
addikt
válasz
VladimirR #515 üzenetére
Nem volt időm korábban foglalkozni ezzel, de most belenéztem.
Nálam jól rendezi a mintabemenetet, egyszeri átolvasásra jónak tűnik az algoritmus. Egy hibát találtam: A kimenet elejére mindig berak egy üres sort, mégpedig azért, mert a láncolt lista végén mindig van egy üres elem, és hiába eggyel kisebb az ''n'' értéke, mint a láncolt lista elemeinek a száma, a rendezőciklus ezt nem veszi figyelembe: a lista végéig megy (''while lm^.next <> nil do'').
Szerk.: És aztán az utolsóként megvizsgált után következő elemben levő szöveget is felhasználja (''lm^.next^.s'').
[Szerkesztve] -
Protezis
őstag
válasz
VladimirR #513 üzenetére
Soha nem tenném
Így utólag összehasonlítottam a te progidat, meg az enyémet, és látom, hogy néhány helyen sikerült túlbonyolítanom. Az elve u.a., mivel a tiédből értettem meg a láncot, utána nem nagyon tudtam tőle elszakadni
De legalább én írtam, nem copyztam semmit!
Mail ment! -
VladimirR
nagyúr
aloszinuleg azert mukodik a program maga, mert ennek a nagybetusitesnek eleg ritkan van szerepe
mint Te is irtad: ''Az ''Asztal alma'' és a ''telex Telefon'' rész gyanús...'' - a tobbi azonban rendben volt, hisz a tobbi mind kisbetus szo
viszont ami igazan erdekes, az az hogy a masik peldaban (a derivalos bemenet) nincs is nagybetu
meg lenne meg egy olyan keresem, hogy nezz mar ra erre a kodra: Bővebben: link
mindenkinel hibas eredmenyt ad, kiveve nalam (mondjuk nalam is csak akkor, ha a bp ''fejlesztokornyezetebol'' futtatom ctrl+f9-cel, a kesz exe nekem sem ad jo eredmenyt)
kosz -
WN31RD
addikt
válasz
VladimirR #513 üzenetére
Én láttam a kódot, és szerintem az #509 alapján kitalálható, úgyhogy nemigen szegem meg az itt korábban ''aláírt'' NDA-t
ezzel:
Az eredeti kicsi2nagy függvény olyan, mint ami az #509-ben van, kivéve:
Nincs ''tarolo'', és a ciklusban levő if-ben így néznek ki az értékadások:
kicsi2nagy[ i ] := chr( ... )
illetve:
kicsi2nagy[ i ] := szoveg[ i ]
0. karaktert nem állítgat, csodálkozom is rajta, hogy egyáltalán működik, de Pascalban már nem vagyok otthon, úgyhogy passzolom a kérdést. -
VladimirR
nagyúr
válasz
Protezis #511 üzenetére
el tudnad kulkdeni a forrast, vagy akar csak a nagybetusitest vegzo reszletet? (bar jobb lenne a teljes, mert erdekel, hogy ha soronkent futtatom, akkor mit latnek)
mert van egy olyan gyanum, hogy miutan a tarolo nevu valtozot feltoltotted betukkel, nem allitottad be a 0. karaktert, vagyis a string hosszat - igy a az osszehasonlitast nem lehetett elvegezni, s kvazi veletlenszeruen kapod a kimenetet
na azert veletlenszeruen megsem, hisz a memoriaban ott maradnak az ertekek, s ennek koszonhetoen egymas utan tobbszor futtatva mindig ugyanazt kapod
igazan nem mondhatod, hogy a kotprogodat akarom behuzni
[Szerkesztve] -
WN31RD
addikt
válasz
Protezis #511 üzenetére
Én sem tudom, miért van így. Lehet fordító hiba, lehet hiba a libekben (unitokban), vagy lehetséges az is, hogy Pascalban az ilyen művelet (inicializálatlan stringbe indexelő operátorral való írás) eredménye nem definiált.
Meg kellene nézni a generált kódot, sok turpisságra fény derülhet ilyesmiből, de mivel Pascalt nem használok, ezzel nem fogom az időt tölteni.
Örülj neki, hogy megoldódott a probléma. -
Protezis
őstag
Csak azt nem értem, hogy miért nem tölthetem fel a stringemet indexelve
Linux alatt ugyanis rossz volt, a hozzáfűzéssel meg jó.
Szvsz az indexelős változat is szabványos dolog. Ekkora sz@rt, hogy ugyanazzal a compilerrel (FreePascal) win alatt jó, linux alatt meg rossz. Ép ésszel fel nem tudom fogni.
(az indexelés azért nem látszik, mert [ i ]-t dőltnek értelmezi a PH.) -
WN31RD
addikt
válasz
Protezis #509 üzenetére
Jajj...
A függvény elejére, a for ciklus elé: (Rég használtam már Pascalt, nem tudom, hogy ez szigorúan véve szükséges-e, de semmiképpen nem árt, és mindenképpen egyértelműbb.)
tarolo := '';
Az if utasításban levő értékadások így nézzenek ki:
tarolo := tarolo + chr( ... );
illetve:
tarolo := tarolo + szoveg[ i ];
[Szerkesztve] -
Protezis
őstag
Function kicsi2nagy (szoveg: string): string;
var
i: integer;
tarolo: string;
begin
for i:=1 to length(szoveg) do
if ((szoveg>='a') and (szoveg<='z')) then
tarolo:=chr(ord(szoveg)-(ord('a')-ord('A')))
else
tarolo:=szoveg;
kicsi2nagy:=tarolo;
end;
Így csináltam meg. Viszont erre a bemenetre nem jó:
hurka!]a kocsi derival''+ favago: 3 5=sok
kimenet:
derival a favago hurka kocsi sok
[Szerkesztve] -
WN31RD
addikt
válasz
Protezis #505 üzenetére
Megnéztem a programot, és megvan a hiba: a kicsi2nagy függvény a problémás: inicializálatlan stringbe (a visszatérési érték) írogatsz karakterenként... nem kellene.
Figyelmedbe ajánlom a System unit Upcase nevű függvényét, ami ugyanezt csinálja, csak jól. Hacsak nem követelmény, hogy saját rutinnal oldd meg ezt is, akkor ajánlom, hogy használd inkább azt.
Ha saját rutinnal kell megoldani, akkor úgy csináld, hogy a kicsi2nagy-ban felveszel egy lokális változót, ami az eredményt fogja tárolni. Inicializálod egy üres string-gel, és ehhez adod hozzá egyenként a karaktereket, végül a kicsi2nagy visszatérési értékének ezt a stringet adod meg. Tehát valahogy így:
...
Result: String;
...
Result := '';
...
Result := Result + Chr( ... );
...
kicsi2nagy := Result; -
Protezis
őstag
Végigmész a string betűin. Ha az x. betű u.a mint a keresett szó 1. betűje, akkor bemész egy ciklusba, ahol összehasonlítod az x+1-et a keresett 2. betűjével, és így végig a keresett szó uccsó betűjéig. Ha megvan benne, akkor növeled a számlálót, és ugrasz a string 2. betűjére. Ha nincs, ugyancsak.
-
Protezis
őstag
El se hiszem. Most meg mi a baja? Win alatt jól műkszik.
Elegem van ebből az egész linuxból, már megbocsásson az egész linux/unis közösség.
Meg persze a köcsög tanáromból.
Esetleg nem tudod, mi lehet a baj? Vagy nem vágod a pascalt?
Azt nem értem, hogy ha lefordul, és lefut tökéletesen mindkét rendszeren, akkor miért nem u.a a kimenet. -
Saar
csendes tag
Sziasztok. Ezt a progit kell megírnom, de sehogy sem megy.
5: Szó keresése ASCII fájlban.
A program feladata egy karaktersorozat előfordulásainak megszámlálása az
inputban. A program a standard inputról bekér egy sztringet, és az inputban
megszámlálja annak az összes előfordulását. Az output az előfordulások száma
soronként, a sor számával együtt (csak amelyik sorban legalább egyszer
szerepel), és összesen. Az átlapoló előfordulások is számítanak (például az
'ababab' sztringben az 'abab' kétszer szerepel: 'ABABab' és 'abABAB'). A
kis- és nagybetűk különbözőnek számítanak.
A példában a keresett szó: 'ring'.
Példa input:
one ring to rule them all,
one ring to find them,
one ring to bring them all
and in the darkness bind them
Példa output:
1. sor: 1
2. sor: 1
3. sor: 2 -
Új hozzászólás Aktív témák
- AKCIÓ! MSI Z77 MPOWER Z77 chipset alaplap garanciával hibátlan működéssel
- BESZÁMÍTÁS! Asus ROG STRIX Z490-G Gaming alaplap garanciával hibátlan működéssel
- ÁRGARANCIA! Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- Apple iPhone X 64GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest