Hirdetés
- Nincs megállás akkuméretben
- Hivatalosnak tűnő képeken a Galaxy S25 FE
- Yettel topik
- Google Pixel topik
- Redmi Note 14 Pro+ 5G - a tizenhármas átka
- Samsung Galaxy S23 Ultra - non plus ultra
- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Android alkalmazások - szoftver kibeszélő topik
- Fotók, videók mobillal
- Törik-e a Pixel Pro, mint a tavalyi Fold?
Új hozzászólás Aktív témák
-
zordmorc
csendes tag
Sziasztok!
Nem tudná megmondani valaki hanyas megszakítást kel hasznáni a videókártyához?
Azt tudom hogy az ax-nek 8-at kell adni ha karakteres üzemmódot akarok használni,
és 13-mat ha grafikusan. De javítsatok ki ha tévedek! Előre is köszi a válaszokat. -
Lortech
addikt
Ha megnézed, a következő hsz-ben leírtuk a megoldást. Önmagában ctrl+f9 csak futtatja a kódot, nem csinál a lemezre exe-t, azt a compile/build-del tudsz csinálni. (alt+f9, alt+c+b) A gond itt viszont az volt, hogy alapesetben nem a lemezre készíti el az exe-t, hanem a memóriába. Ezért kell compile/destination/disk-re állítani, mert egyébként hiába compile, nem lesz a lemezen exe. Save as-zel az editorban lévő forráskódot tudod csak menteni, ha megadsz neki egy exe kiterjesztést, attól még a forrás kerül bele, nem a lefordított kód.
-
xofi
csendes tag
válasz
Hyper Pascal #1086 üzenetére
szerintem ő maga csinál exe-t, méghozzá úgy, hogy ctr+F9 lenyomásával teszteled a progit. akkor ő legyártja. ha mégsem-> file->save as->c:\progi\nev.exe ->ok persze az elétési út és a progi neve rád van bízva
-
xofi
csendes tag
szia! nekem is tudnál segíteni?
az én feladatom a következő:
http://members.chello.hu/univerbal.bt/AdatszerkBea06.htm
innen is az 1. feladat.megvan a fájlból beolvasás, azt hiszem, de elbizonytalanodtam, hogy több unitot kell-e csinálnom, vagy befér 1-be?
megvan a szétválogatás tétele listára, de nem értem, hogy pl. 10 felé hogy válogatja majd szét, és ad-e nevet, vagy mi is van.
annyit tudnál segíteni, hogy a programhoz milyen unitokat kell felvennem?
előre is köszi, ha van rá időd..
zSófi -
RAM
őstag
while ... nil do
Ez valami láncolt lista?
A nil mit jelent? -
tütüke
tag
Sziasztok!
Egy jó nagy segitségre lenne szükségem. A feladat:
Írjunk programot, amely grafikusan ábrázolja az interpolációs polinomot!
Teszteljük a programot a következő adatokkal!
(-10,6) ; (-7,-1) ; (-3,3) ; (0,0) ; (2,-6) ; (6,-1) ; (8,2) ; (10,7)
Odáig megvan, hogy kiszámolja az értékeket, de a grafikus ábrázolás teljesen hiányzik.Ha valaki tud nekem segiteni, akkor nagyon megköszönném.
Na ami megvan:
program interpolacio;
uses crt;
var n,i,j,k:byte;
s,t:real;
a:array[1..20,1..20] of real;
x,y:array[1..20] of real;
sor:array[1..20] of byte;
procedure olvas;
begin
clrscr;
writeln('Interpol ci˘s polinom meghat roz sa');
write('Kerem a t bl zatban szerepl‹ elemp rok sz m t(max 20): ');readln(n);
writeln('K‚rem az ‚rt‚kp rokat!');
for i:=1 to n do
begin
gotoxy(5,5+i);write('x[',i,'=');readln(x);
gotoxy(18,5+i);write('y[',i,'=');readln(y);
end
end;
procedure feltolt;
begin
for i:=1 to n do a[i,n+1]:=y;
for i:=1 to n do
for j:=n downto 1 do
if j=n then a[i,j]:=1 else a[i,j]:=x*a[i,j+1];
end;
procedure csere;
var seged:real;
seged1:byte;
l,m,h:byte;
begin
seged1:=sor;sor:=sor[j];sor[j]:=seged1;
for l:=1 to n do
begin seged:=a[l,i];a[l,i]:=a[l,j];a[l,j]:=seged end
end;
procedure rendez;
var max:real;
begin
for i:=1 to n do sor:=i;
for i:=1 to n-1 do
begin
max:=abs(a[i,i]);j:=i;
for k:=i+1 to n do
if abs(a[i,k])>max then begin max:=abs(a[i,k]);j:=k end;
if j<>i then csere
end
end;
procedure kiir;
var v,j:byte;
nincsere:boolean;
s1:byte;
s2:real;
begin
v:=n;
repeat
nincsere:=true;
v:=v-1;
for i:=1 to v do
begin
j:=i+1;
if sor>sor[j] then begin s1:=sor;sor:=sor[j];sor[j]:=s1;
s2:=a[i,n+1];a[i,n+1]:=a[j,n+1];a[j,n+1]:=s2;
nincsere:=false end;
end
until (v=1) or nincsere;
gotoxy(10,10);write('P(X)= ');
for i:=1 to n do
begin
if (a[i,n+1] >0) and(i>1) then write('+');
if a[i,n+1] <0 then write('-');
if (a[i,n+1] <>0) and (abs(a[i,n+1])<>1) and(i<n) then
write(abs(a[i,n+1]):5:2,'*');
if (i<n) and (a[i,n+1]<>0) then begin write('X');
if n-i>1 then begin gotoxy(wherex,wherey-1);
write(n-i);gotoxy(wherex,wherey+1) end
end
else if a[i,n+1]<>0 then write(abs(a[i,n+1]):5:2)
end;
writeln
end;
procedure kikuszobol;
var h,t:real;
begin
for i:=1 to n do
begin
h:=1/a[i,i];
for k:=i to n+1 do
a[i,k]:=a[i,k]*h;
for j:=1 to n do
if j<>i then begin t:=a[j,i];for k:=i+1 to n+1 do a[j,k]:=a[j,k]-t*a[i,k] end
end
end;
begin
olvas;feltolt;rendez;kikuszobol;clrscr;kiir;
readln
end. -
Gizmo_joe
csendes tag
Sziasztok!
Lenne egy kérésem! Ha tudnátok nekem mondani egy példát a dinamikus adatszerkezetre. Nem egy konkrét megoldást kérek, csak egyáltalán valami olyant, hogy mit is takar ez példára átültetve.
Segítséget előre is köszönöm. -
Lortech
addikt
válasz
Hyper Pascal #1086 üzenetére
Menj a compile menüre, nyomj rá a destination-re, ezzel átvált memory-ról diskre. Aztán compile/build. Ekkor lefordul exe-re a program, amit alapesetben ott találsz, ahol a forráskódod is van.
szerk: megelőztek, túl bőbeszédű voltam.
[Szerkesztve] -
Benmartin
senior tag
válasz
Hyper Pascal #1086 üzenetére
compile/destination memory/compile
-
Hyper Pascal
csendes tag
Hello all!
Én is mostanság tanulom a Turbo Pascalt és már tudok egysmást de létszi ne szidjatok azért amit kérdezn ifogok
kérdés:
Amit csináltam TP-be azt hogy mentsem .exe filera? -
peterszky
őstag
négyzetgyököt hogyan kell beírni pascalban? (másodfokú egyenlet miatt kéne)
szerk: már megvan, kereső rulz
[Szerkesztve] -
Tóth
csendes tag
Tudna valaki segíteni a házimban?
Abszolute de nem vágom. -
Tottu
senior tag
Oh, megtaláltam. A zárójelek lemaradtak
Csak ez a hibaüzi kicsit félrevezetett...
-
Tottu
senior tag
Lenne egy naon sűrgős kérdésem:
PROCEDURE rendezes (nap : byte);
var
tmp : byte;
begin
For y := nap to 1 do
begin
i := y - 1;
TMP := adatok[y];
while i > 0 and tmp > adatok do
begin
adatok[i+1] := adatok;
inc(i);
end;
adatok[i+1] := TMP;
end;
end;
Adott ez az eljárás ami egy beszúrásos rendezés lenne. Amit kiemeltem sort, a ciklus feltételénél vmi hibát talál a fordító de nem tudok rájönni hogy mi lehet a baja. És ezt írja ki:
Incompatible types: got ''Boolean'' expected ''Longword''.
A feltételben előforduló változók típusa : byte. -
Lortech
addikt
válasz
Darth_Revan #1078 üzenetére
Súgóóó, ctrl-f1-et nyomjál, mikor a pieslice- on van a szöveges kurzor.
Fejből nem tudom, de gondolom hasonló, mint az arc: kp, r, szögek, setfillstyle-ban meg a szín+minta.
[Szerkesztve] -
Lortech
addikt
válasz
Darth_Revan #1076 üzenetére
PieSlice-szal rajzolod a 4 körcikket, SetFillStyle-lal változtatva a kitöltés színét, mondjuk egy repeat ciklusban, aminek kilépési feltétele a ''keypressed''. Néhány sor az egész.
-
Darth_Revan
veterán
Sziasztok!
Kérnék 1 kis segítséget az alábbi program elkészítésében:
Adott 1 kör,az legyen felosztva 4 részre,mind a 4 különböző szinű és gomb lenyomásig folyamatosan változtassa mind a 4 rész a színét!
Beadási határidő holnap délelőttJelenleg is dolgozok rajta,csak ha nem működne a progi amit én csinálok (ami több mint valószínű
),akkor kell 1 B terv is
Előre is köszönöm a segítséget
[Szerkesztve] -
Lortech
addikt
Itt van egy egyszerű példa + lent vannak a fontosabb függvények, ezzel már el tudsz indulni:
initgraph/closegraph: inicializálja/befejezi a grafikus üzemmódot.
setcolor: színt állít be, ez lehet szám 0-15-ig, vagy ahogy a példában is szerepel, az angol szöveges megfelelőjük .
Line(x1,y1,x2,y2): x1,y1 képponttól x2,y2 képpontig húz egy vonalat.
Arc, circle körrajzolás.
Szöveget outtextxy-vel tudsz kiiratni, x,y kezdettől. A betű méretét, settextstyle-lal módosíthatod.
Rectangle - téglalap, bal felső és jobb alsó csúcs x,y koordinátáit kell magadnod.
Lent a kommentben benne van a legtöbb grafikus funkció, ha tp-ban nyomsz rájuk (mikor a szövegen állsz) egy ctrl-f1-et, egyből lejön a súgó az adott fgv-re, és megnézheted mire jó, és hogyan kell paraméterezni.
stbstb.
Jó rajzolgatást.
-------------
program gr_pelda;
uses crt,graph;
var
x,y: word;
grDriver: Integer;
grMode: Integer;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,' ');
setcolor(red);
arc(50,50,0,360,40);
rectangle(100,10,150,60);
outtextxy(200,50,'STOP');
line(300,100,350,200);
readln;
closegraph;
readln;
end.
{Arc
Bar
Bar3D
Circle
ClearDevice
ClearViewPort
CloseGraph
DetectGraph
Drawpoly
Ellipse
FillEllipse
FillPoly
FloodFill
GetArcCoords
GetAspectRatio
GetBkColor
GetColor
GetDefaultPalette
GetDriverName
GetFillPattern
GetFillSettings
GetGraphMode
GetImage
GetLineSettings
GetMaxColor
GetMaxMode
GetMaxX
GetMaxY
GetModeName
GetModeRange
GetPalette
GetPaletteSize
GetPixel
GetTextSettings
GetViewSettings
GetX
GetY
GraphDefaults
GraphErrorMsg
GraphResult
ImageSize
InitGraph
InstallUserDriver
InstallUserFont
Line
LineRel
LineTo
MoveRel
MoveTo
OutText
OutTextXY
PieSlice
PutImage
PutPixel
Rectangle
RegisterBGIdriver
RegisterBGIfont
RestoreCrtMode
Sector
SetActivePage
SetAllPalette
SetAspectRatio
SetBkColor
SetColor
SetFillPattern
SetFillStyle
SetGraphBufSize
SetGraphMode
SetLineStyle
SetPalette
SetRGBPalette
SetTextJustify
SetTextStyle
SetUserCharSize
SetViewPort
SetVisualPage
SetWriteMode
TextHeight
TextWidth} -
Lali87
csendes tag
Hi!
Kellen nekem egy kis segítség: olyan garafikus programot kellene írni, amiben megtalálható egy stop tábla, egy elsőbbségadó kötelező , és egy behalytani tilos tábla. Lehetőleg egymás mellett helyezkedjenek el.
Nagyon fontos lenne a segítség mert én a pascal grafikus részéhez nem értek.
Ekőre is köszönöm a segítséget. -
Lali87
csendes tag
Hi!
Kellen nekem egy kis segítség: olyan garafikus programot kellene írni, amiben megtalálható egy stop tábla, egy elsőbbségadó kötelező , és egy behalytani tilos tábla. Lehetőleg egymás mellett helyezkedjenek el.
Nagyon fontos lenne a segítség mert én a pascal grafikus részéhez nem értek.
Ekőre is köszönöm a segítséget. -
K.Viktor16
tag
válasz
Lortech #1070 üzenetére
Igazad van, megpróbálom elmagyarázni akkor. Szóval egy editort készítünk most, egy valamekkora ablak, aztán abba lehet mindenfélét irogatni, delete, insert, föl le ilyen alap dolgok működnek már, olyasmi mint egy jegyzettömb, csak kicsit azért egyszerűbb formában
. Van egy főrésze, ott semmi fontos nincs, csak hogy az ablak mérete mekkora, és oda hivjuk meg a legfontosabb rutint. Ebbe van minden művelet amit fönn leírtam, és most szeretnék egy színváltó funkciót belerakni. Ezt egy külön rutinba írom le, az előző hszben ott van. Azt szeretném elérni ezzel, hogy ha megnyomom a 2es gombot(#50) akkor a szín feketéről, vagy épp amilyen, váltson át arra, amire akarom. a t változó helyébe írom be azt a számot amilyen szint szeretnék, ezt a változót egy másik rutinban már megadtuk (Textcolor (t)). Nos, elindítom az editort, megnyomom a 2est, át vált másik színre, tudok is úgy írni. Viszont ha azután nyomom meg a 2-est, miután már beírtam valamit az ablakba, nem csinál semmit, erre szeretnék megoldást találni. Remélem érthetőbb így, az előbb tényleg nem írtam le pontosan. Ja, a t:=0-t, és a változókbol a k-t kitöröltem, feleslegesek voltak.
[Szerkesztve] -
Lortech
addikt
válasz
K.Viktor16 #1069 üzenetére
Akárhogy nézem, ebben nincs semmiféle színváltással kapcsolatos parancs. A ''t'' változó szerepe sem tisztázott számomra, mert két értékadása is van, de egyszer sem használod fel a procedúrában. Inkább azt írd le, de nagyon egzakt módon, lépésről lépésre, hogy mit szeretnél csinálni.
szerk: mindig azt szoktam tanácsolni, hogy gondold magad a mi helyünkbe, és úgy próbáld elmagyarázni a problémát, mert te biztosan tudod, hogy mit szeretnél, de mást ne kezelj úgy, mintha teljesen képben lenne.
[Szerkesztve] -
Lortech
addikt
válasz
K.Viktor16 #1067 üzenetére
Egy kódot lehetne látni, vagy valahogy máshogy leírnád a problémát? Lehet, hogy fáradt vagyok, de nem értem..
-
K.Viktor16
tag
Köszi, sikerült megoldani. Lenne viszont még egy kérdésem ezzel kapcsolatban. A suliban vmi egyszerű editort írunk jelenleg, és most ahhoz csinálok egy ilyen szinváltó rutint. Na ha elinditom, és még nincs semmi beirva, akkor megváltoztatja a betű színét. Viszont ha már beirok akár egy betűt is, már nem változik meg a színe. Ezzel mit lehet kezdeni? Hogy oldjam meg? Remélem nem kérdezek nagy hülyeségeket, csak nem nagyon tudok máshoz fordulni
köszi
-
Diskcopy
tag
válasz
K.Viktor16 #1065 üzenetére
csinálsz egy változót, mondjuk ch:char;
aztán if keypressed then ch:=readkey;
aztán a ch értékét vizsgálod..
F2-t nemtom, szerintem azt csak scan kódból éred el(rég volt nemtom biztosra).
de a ch-ban sima kódok vannak , tehát pl a fel az #72, le az #80, balra #75, jobbra #77, escape #27, backspace #8(???) stb stb. betűket is figyelheted persze.. if ch='a' then begin...... end; -
K.Viktor16
tag
Hali!
egy elég egyszerűt kérdezek,nem vágom annyira a pascalt. Szóval IF parancsnál hogy lehetne megcsinálni h akkor hajtsa végre ha lenyomom vmelyik billentyűt(pl f2)? Tehát
IF f2-t lenyomom THEN Begin stb..
Köszi! -
Lortech
addikt
válasz
Rover623 #1055 üzenetére
Én megnéztem egy sokszor lefutó ciklusba ágyazva, hogy inc(x); inc(x); vagy pedig x:=x+2 fut le gyorsabban, és majdnem kétszer gyorsabb volt az utóbbi. A konkrét feladatot is, ha leírod két inc-cel és x:=x+2-vel is, csak a szemléletesség kedvéért nagyobb elemszámmal, akkor az x:=x+2 a gyorsabb, szóval...
Nyilván csak akkor fordítódik inc-re, hogyha 8/16bites operandusokkal dolgozunk, mivel 8086 rendszer 8086-os fordítóban nincs 32bites inc.
INC(A,B)- nek nem néztem utána, de úgy gondoltam, hogy ugyanaz mintha B-szer inc(A)-t írtam volna, de így kifejezetten inc-ekre fordítja, nem add-ra.
Hogy őszinte legyek, nincs kedvem visszafordítgatni, aztán kibogarászni, de hétvégén megnézem majd, mikor rendelkezésre állnak a megfelelő eszközök (most gépteremből netezek.).
''A különbség:
Inc(A,B) esetén a B-t betölti az akkumulátorba és az aksit közvetlenül adja az A változóhoz.''
Ezt nem nagyon értem egyébként, azt mondod, hogy van két operandusú inc, ami a leírt módon m
működik, vagy hogy fordítódik le ez, ha nem? -
QuarK
senior tag
válasz
Rover623 #1055 üzenetére
Érdekes; amit írsz, annak alapján tényleg az Inc() gyorsabb lenne, mint a sima összeadás, de mikor ciklusokban alkalmaztam (pl. textúrarajzolás, collision-detection, stb., tehát ami a program futási idejének 90%-át legalább mindig vitte), ott jó pár frame/sec-et javított, ha az összes Inc() utasítást kicseréltem sima mezei x := x + n;-re. Csak próbaképpen legeneráltam 1 millió képkockát, többször egymás után mindkét módszert alkalmazva, és nekem az utóbbi vált be, jóval gyorsabbnak bizonyult.
Gondolom, hogy (talán, nem akarok hülyeséget mondani) a processzor cache valahogy hatékonyabban hajtja végre -- vagy lövésem sincs.
megj.: véletlenszámokat nem használt a teszt, így mindig ugyanazt kellett végrehajtania; + két teszt között mindig restartolva volt a gép.
[Szerkesztve] -
Jester01
veterán
-
tütüke
tag
válasz
Rickenstein #1056 üzenetére
Kedves vagy, de ez volt az első dolog, amit megpróbáltam. Nem sok használható dolgot találtam sajna. Ezért próbáltam meg itt, hátha tud valaki valami konkrétat. Azért köszönöm szépen
-
Rickenstein
senior tag
Álltalában előtte szokták a számrendszereket ill. a számrendszerekkel való müveleteket tanítani: Bináris, Hexadecimális számrendszer átváltás, Bináris aritmatikai müveletek (összeadás, kivonás, szorzás, osztás, negálás stb.). Gugli lökött ki egy csomó használható dolgot: [link] Csemegézz...
-
Rover623
félisten
válasz
Lortech #1028 üzenetére
Ennél bonyolultabb a dolog...
De a pacal Inc mindig gyorsabb mint az összeadás!
Érdekesség: INC-re egyetlen esetben fordítódik...ha 8 vagy 16 bites egészet növelünk 1-el...
LongInt esetében már ADD,ADC párosra fordítódik ebben az esetben is!
Minden más esetben (tehát 1-nél nagyobb vagy változó növekmény esetén) ADD utasításokra fordul, csakúgy mint a pacalos összeadás esetében...
A különbség:
Inc(A,B) esetén a B-t betölti az akkumulátorba és az aksit közvetlenül adja az A változóhoz.
A = A + B esetben az A értéke kerül az aksiba, ehhez adódik hozzá a B és az eredmény visszaíródik az A-ba...pont mint ahogy a leírt alakból gondolná az ember...
Tehát az Inc-hez képest az összeadás plusz adatmozgatással jár! -
tütüke
tag
válasz
Rickenstein #1053 üzenetére
Köszi. Óravázlatot kell írnom a pascal program szerkezeti felépítéséről, de nem tudom, hogy hanyadikban tanitják, illetve, hogy mi az előtte lévő óra anyaga(az kell az óra eleji ismétléshez...)
Ha valakinek van esetleg egy hasonló óravázlata azt is szivesen fogadnám -
tütüke
tag
Sziasztok!
Meg tudná nekem valaki mondani, hogy hanyadik osztályban tanítják a pascalt?
Köszi: tütüke -
Lortech
addikt
válasz
Lortech #1048 üzenetére
Még kiegészítés:
for i:=1 to 10 do
s:=tomb[ i ];
tomb[ i ] :=tomb [i+1];
tomb[i+1]:=s
Ez gondolom egy cserét valósítana meg. De gondolj bele, neked nem az kell, hogy kicseréld az elemeket, hanem, hogy eggyel növeld vagy csökkentsd a sorszámukat.
Pl i=1, irany=''f''-nél tfh. tomb[1]=10, tomb[2]=20, ha kicseréled őket a te módszereddel, akkor igaz, hogy a 10-es eggyel nagyobb, illetve a 20-as eggyel kisebb indexszel fog rendelkezni (tomb[1]=20], tomb[2]=10), de ez neked nem együtt kell, hanem külön külön, az irány megválasztásának megfelelelően. És ha belegondolsz, i=2 esetben tomb[2]=10-et fogod kicserélni tomb[3]=30-ra, és így már kettőt lépett előre, és a végén azt éred el, hogy a tomb[1]=10 elment a legutolsó helyre. Ellenben ha megfigyeled az általam leírt módszert, és deklarálsz a tomb[1] elé egy tomb[0]-t, akkor ebbe beteszed a i=1 esetben a tomb[1]=10-et, tomb[1] ekkor a végső helyére került, az eredetinél eggyel alacsonyabb sorszámú helyre, így i=2 esetben a 10-es nyugodtan felülírható a következő értékkel ( 20).
irany=l esetén ugyanez, csak visszafelé. Ott az i=10-nél a 11-es indexű tömb lesz a pótlás, abba rakod a 10. elemet, ekkor ez helyére került, így felülírható a 10. elem a 9.-kel, és így tovább.
A kiírás pedig azért az utolsó tömbelemet írná csak ki, ha egyáltalán működne, mert nem foglaltad ciklusba a kiiratást, és csak egyszer fut le, így csak az i-ben utoljára megmaradt indexnek megfelelő tomb[ i ] elemet írja ki. Többet azt hiszem már tényleg nem tudok segíteni.
illetve de (): még annyit hozzá kell tenni, hogy ezzel a módszerrel a kiíratást is irany=f/l-nek megfelelően kell elvégezni, mivel ''f'' esetén 2-től 11-ig kell kiiratnod az elemeket (melléírva az indexét, mivel csak úgy tudod prezentálni, hogy tényleg azt csináltad amit kellett), ''l'' esetén pedig 0-9-ig ugyanígy. A kiiratást elvégezheted még a sorszámnövelő/csökkentő rész közben is, az if-en belül, felhasználva azt, vagy az egész után egy újabb if bevezetésével.
[Szerkesztve] -
Lortech
addikt
válasz
Sátánné #1047 üzenetére
Az a probléma, hogy a ph motor kiszedi az [ i ] -ket (most azért nem, mert szóközt raktam), mert idézetként tekinti őket. Úgyhogy az előzőekben feleslegesen koptattam a számat a tömbökről, meg az indexelésről, mert odaírtad te, csak mi nem láttuk.
Az else azért nem jó, mert előtte több utasítás van, ezért az IF igaz ágát begin .. end közé kell rakni. Fontos, hogy az end után nem kell pontosvessző, mivel else követi.
Ennek a sornak sincs túl sok értelme: ''tomb[i-1]'';
További probléma, hogy a for után sem rakod begin .. end közé az utasításokat, hogyha több van belőlük, akkor ezt meg kell tenned, különben másképp fog lefutni.
A tömböt 1-10-ig deklaráltad tanácsom ellenére, ami újabb problémához vezet, mivel amikor a i=10-hez érsz, 11. elemre hivatkozol, illetve irany='l' esetén i=1-nél 0. elemre, mely elemek nem léteznek, és ez futási hibát okoz. Ha a számlálós ciklust indexét csökkenteni akarod ''i:=10 to 1''-nél a to helyett downto-t kell használnod. Teljes programot pascalban tőlem biztos nem fogsz látni, sajnálom. Az a legelemibb dolog, hogy a nyelv szintaktikáját megtanulod, ez még nem programozás, de látszólag még ez sem megy. Az általános megoldást már leírtam, úgyhogy hajrá. -
Sátánné
tag
válasz
Lortech #1046 üzenetére
Eddig eljutottam!
Az else-el van valami baj és a tömb elemeinek a számát írja ki a végén nem azokat a számokat amiket az elemei tartalmaznak! Van valakinek valami ötlete, hogy miért? És légyszives a helyes megoldást írjátok már oda, mert én ennél többet nem tok kihozni belőle!
program csere;
var tomb:array[1..10] of integer;
i,s:integer;
irany:string;
begin
writeln ('Adjon meg 10 számot!');
for i:=1 to 10 do
Begin
Writeln(i,'.szám: ');
readln (tomb);
end;
writeln ('Adjon meg egy csereirányt!Fel:f vagy le:l!');
readln (irany);
if irany='f' then
for i:=1 to 10 do
s:=tomb;
tomb :=tomb [i+1];
tomb[i+1]:=s
else
for i:=10 to 1 do
s:=tomb;
tomb:=tomb[i-1];
tomb[i-1];
writeln ('Az új tömb számai: ',tomb);
readln;
end. -
Lortech
addikt
ment priv.
Sátánné: feladtad?
Csináltam egy vázlatot, hogy kb én hogyan gondoltam.
Többféleképpen lehet értelmezni, én úgy oldaottam meg, hogy bővítettem az 1-10-es intervallumot egy 0. és 11. elemmel, hogy ne lépjenek ki, ne vesszenek el az első illetve utolsó elemek.
változók:
tomb: egész[0-11]; (!)
i: egész;
program kezd
ciklus i=1-től 10
be: tomb[ i ];
ciklus vége;
ciklus amíg nem(irany=''f'' vagy irany=''l'')
be: irany;
ciklus vége;
Ha irany=''f''
elágazás kezdete
ciklus i=0-től 9-ig
tomb[ i ]=tomb[ i+1 ];
ciklus vége;
egyébként
ciklus i=11-től 1-ig
tomb[ i ]=tomb[ i-1 ];
ciklus vége;
elágazás vége.
program vége.
[Szerkesztve] -
Lortech
addikt
válasz
Diskcopy #1042 üzenetére
#1035-ben leírta, hogy mit szeretne, de külön érdekes, hogy rendezésre gondoltál.
Sátánné: még valamit kifelejtettem: megvizsgálod, hogy l-et ütött-e le a felhasználó ( és ekkor csökkenő indexre rakja az elemeket), viszont ezen feltétel nem teljesülése nem jelenti azt, hogy az illető f-et nyomott, csak azt, hogy nem l-et, ez egy alapvető programozási hiba (a konkrét példánál inkább nézőpont kérdése, hogy tényleg annak tekinthető-e, mindenesetre van jobb megoldás is), hogy else ágra raktad a felfelé index növelést. Pl egy ''else if''-fel lehetett volna szebben megoldani, és feltételnek az f lenyomását megadni, aztán még esetleg azt is megoldani, hogyha egyikse volt a kettő közül, akkor bekérje újra, vagy kilépjen.
[Szerkesztve] -
Lortech
addikt
válasz
Sátánné #1040 üzenetére
Érdekes próbálkozás. Nekem valahogy úgy tűnik, hogy vagy nincs is egyáltalán Pascalod, vagy a nyelv alapszintaktikáját nem ismered, és/vagy nem nagyon érted, mit is alkottál.
Kezdjük az első for ciklustól:
readln (tomb ); nem helyes, mivel tomb egy integer típusú tömb, így az egyes elemekre a for ciklus i index változójával hivatkozhatsz így tomb[ i ] (a tömb i-edik eleme). A for ciklus fej részébe nem kell '';'', a do kulcsszó után egyből begin, vagy az egyetlen egy db utasítás vagy vezérlési szerkezet kell.
Tegyük fel, hogy ez megvan, feltöltötted a tömböt.
Ezután az a dolgod, hogy bekéred az irányt, az ''irany'' változót string típusúnak deklaráltad, az egyszerűség kedvéért maradjon így. Bekéred az ''irany''-t, majd if irany:=l then ... elágazással próbálkozol, mely hibás. Pascalban a '':='' jel a legyen egyenlő-t jelenti, melyet értékadásra használhatsz (pl x:= y). Ha összehasonlítasz valamit (itt iranyt az L-lel), ahhoz összehasonlító operátorra van szükséged, az egyenlőségvizsgálathoz ''='' jelet kell használnod '':='' helyett. Van még egy másik probléma is, mégpedig az, hogy a stringeket, karaktereket ' ' közé tesszük. Helyesen tehát ez a sor: if irany='l' then.
A s:=tomb ; sor is hibás, a fentebb említett okok miatt, mivel ''tomb'' az egy tömb, ezért ha egy elemére hivatkozol, meg kell adnod az indexet, hogy épp melyikre, mert anélkül értelmetlen. Innentől egyébként eléggé hiányos, és egyáltalán nem jó a kód.
Tehát eldőlt, hogy ''le'' vagy ''fel'', ezekután át akarod rakni a megfelelő tömbelemeket eggyel kisebb vagy nagyobb helyre, egy s segédváltozó segítségével (ami egyébként kiküszöbölhető kis gondolkodással). Viszont itt nem használtál ciklust, szóval maximum egy-egy elemet tudnál megcserélni, és azok sem a megfelelőek. Amúgy sem cserére van szükséged igazából.
A length függvény stringeken van értelmezve, azok hosszát adja meg, tömb elemszámának meghatározására nem használható, ezt mintha egy másik nyelvből vetted volna át
[Szerkesztve] -
Diskcopy
tag
-
bcs
aktív tag
válasz
Sátánné #1040 üzenetére
szia,
elsőre ránézésre a következő hibákat találtam:
readln (tomb );
ha array-be akarsz írni, akkor meg kell adni, hogy melyik elemébe.
s:=tomb ;
tomb [length (tomb)+1-i]:=s;
ezek nem fognak semmit csinálni, mert s integer, tomb pedig array.
writeln ('az új tömb: ',tomb);
ez sem fog működni, mert a tömböt elemenként lehet csak kiíratni.
illetve nem igazán értem, hogy miután fel lett töltve a tömb, mit szeretnél csinálni.
[Szerkesztve] -
Sátánné
tag
válasz
Lortech #1038 üzenetére
Elkezdtem a programot és akkor most szeretném a segítségeteket kérni.
program szamcsere;
uses crt;
var tomb:array[1..10] of integer;
s:integer;
i:byte;
irany:string;
begin
clrscr;
writeln ('Adjon meg tíz számot!');
for i:=1 to 10 do;
begin
writeln (i,'.szám: ');
readln (tomb );
end;
writeln ('Válasszon egy csereirányt!Le:l vagy fel:f');
readln (irany);
if irany:=l then
begin
s:=tomb ;
tomb :=tomb[length (tomb)+1-i];
tomb [length (tomb)+1-i]:=s;
end
else
begin
s:=tomb ;
tomb :=tomb [length (tomb)-1+i];
szamok [length (tomb)-1+i]:=s;
end;
writeln ('az új tömb: ',tomb);
readln;
end.
Tudom, hogy nem jó ezért kérem a segítségeteket, hogy mi benne a hiba! -
Tottu
senior tag
Egy szobában N (1≤N≤100) egymást követő napon megmérjük a relatív páratartalmat. A PARA.BE állomány tárolja az első sorában az N értékét, második sorában egy K (1K10) számot a többi N sorban az egy-egy napon mért páratartalom értéket.
Készítsünk olyan programot, amely egyenként beolvassa a páratartalom értékeit és megkeresi az addig beolvasott adatok közül a Kdb legkisebb értéket.
Ha K db-nál kevesebb értéket olvastunk még be, akkor ne történjen semmi.
Ha K vagy annál több adatot olvastunk már be, akkor minden újabb adat beolvasásakor kiírja a K db legkisebb páratartalom-értékű nap sorszámát a növekvő sorrendben.
Például:
A PARA.BE tartalma:
10
4
80
70
75
90
100
60
77
80
77
90
A képernyőre a következők kerülnek kiírásra:
Az N értéke: 10
A K értéke: 4
A 4 legkisebb páratartalmú nap sorszáma:
4 nap után: 1 2 3 4
5 nap után: 1 2 3 4
6 nap után: 1 2 3 6
7 nap után: 2 3 6 7
8 nap után: 2 3 6 7
9 nap után: 2 3 6 7 (vagy 2 3 6 9 is jó)
10 nap után: 2 3 6 7 (vagy 2 3 6 9 is jó)
Ebben a feladatban akadtam most el. A beolvasás az megy, a legkisebb érték megvan. Hogyan lehet azt megcsinálni hogy minden napnál csak a legkisebb értéket nézze (ez megvan még), azonban ha megvan ez az érték akkor ettől az egyel nagyobb érték indexszámát írja ki? -
Lortech
addikt
Sátánné: Ez pont olyan dolog, amiben nem fog senki neked megoldást adni, mert nem túl korrekt dolog, hogy kapjál egy ötöst a semmire. Vagy szerinted megérdemelnéd az ötöst, hogyha most bepötyögném a programot neked, te meg lemásolnád és virítanál vele? Egyébként nagyon baromi egyszerű és elemi feladat, még gondolkozni sem kell hozzá. Ha van konkrét kérdés, ahol elakadtál, akkor persze kérdezz bátran. -
Sátánné
tag
Sziasztok!
Szeretnék egy kis segítséget kérni! Meg kellene írni egy programot, amire 5-öst lehet kapni, csak sajnos én nem nagyon tudok programot írni!
Ez lenne a feladat:
Készíts egy 10 elemű egész típusú tömböt. A felhasználó töltse fel a tömböt számokkal. A program elején a felhasználónak kell megadnia hogy az elemeket 1-el nagyobb indexű vagy 1-el kisebb indexű helyre helyezzük (le, fel). Mind a kettő változatot bele kell írni a programba, mivel nem tudjuk, hogy a felhasználó melyiket fogja választani.
A végén pedig ki kell íratni az új tömböt.
A tanár ezt adta segítségül:[link]
Előre is köszönöm a segítséget! -
RAM
őstag
válasz
Rickenstein #1032 üzenetére
privi ment
-
RAM
őstag
TextBackground( LightGray);
TextColor( map[x,y]);
TextBackground( Black);
ClrScr;
ezekkel van gondja Delphiben, mit változtassak?
Application Console mod-ban próbáltam,
Crt Unit -nak nem tudom van-e megfelelője, így ebben a formában nem ismeri...
Mivel kellene helyettesíteni ezeket az Undeclared Identifiereket? -
Lortech
addikt
válasz
Rover623 #1027 üzenetére
Ha csak nagyjából, akkor jöhet egy jobb megoldás, hadd tanuljak. (komolyan)
Ha +1-et kellett volna hozzáadni (ez sok esetben gyorsabb, mint az add, bár nem minden esetben), akkor ok, de +2-nél biztos vagy benne, hogy gyorsabb és hatékonyabb a két inc? Emlékeimt szerint nem.. -
Lortech
addikt
válasz
Jester01 #1025 üzenetére
Nahát.. talán nem azt kérdeztem, hogy mi a bajod vele, nem?
.. Azért kérdeztem vissza, mert nem tudtam miért a ''
''(tehát az-e a baj, hogy félig megoldottam neki, vagy pedig a megoldásom kritizálod, vagy valami más).
Persze azt gondolsz, amit akarsz.
Remélem ez már nagyjából megfelel:
i:=3;
szum:=1;
while (i<=n) do
begin
szum:=szum+i*i;
i:=i+2;
end;
[Szerkesztve] -
Lortech
addikt
válasz
Jester01 #1023 üzenetére
jajjmár ...
Igyekeztem nem túl bonyolult megoldást adni, és nem feltétlenül a leghatékonyabbat kerestem. Nem akartam módosítani a számlálós ciklus indexét, mert azt nem illik, while-lal meg már túl bonyolult lett volna.
Hát ennyi, ha szépet gyorsat hatékonyat akartam volna, tudtam volna, hidd el.
üdv: Lortech
[Szerkesztve] -
Jester01
veterán
-
zolika-
csendes tag
Naaa.Erröl beszéltem hogy vki segit is és nem lehordja a kérdezötmint eggyesek.Azért persze értelek és nincs harag részemröl.Köszi szépen a helpet.
-
zolika-
csendes tag
Hát köszi szépen.Gondoltam rá hogy megcsinálom de nem igazán sikerült.Arrol meg hogy miért tanulok programozást hááát nem én döntöttem igy de szeretném megtanulni.A tanár az iskolában nem mond el semmit.És nekem könnyebben érthető ha vki elmondja mit is kellene tenni a megoldás érdekében.Tudom azt is hogy vannak itt olyan emberek a forumon akik segítenek másoknak és ez szerintem nagyon jo.Hát kb ennyit tudok neked irni azért köszi a hozzászólásodat a kérdésre, és hogyha kérdezek akkor hülye maradok hát nekem nem ezt mondák eddig.A multokr se az egész progit mondák el és igy sikerült is megoldanom mert meg volt a kiindulás.
-
Rover623
félisten
válasz
zolika- #1016 üzenetére
Durván fog hangzani, de ez van:
Ha minden heti feladatodat más oldja meg, hülye maradsz...
Minek tanulsz te egyáltalán programozást...
Szerintem először vmi ''alapművet'' kellene áttanulmányoznod...
P.S.:
Abban semmi kivetnivalót nem találok, ha vki megakad egy progival/feladattal/algoritmussal és azt mondja: nézzétek, ez a feladat, ezt meg ezt csináltam, nem jó...segítsetek...!
Vagy: erre meg arra gondoltam, szerintetek jó irány ez...?
De aki csak ide ''böfögi'' a feladatot és elvárja hogy mások oldják meg, az menjen inkább közgázra vagy legyen politikus... -
zolika-
csendes tag
Hy.Ismét itt vok és ismét van egy progi amiben a segitségeteket kérném
.Ez volna a feladat:
Összegezzük a páratlan számok négyzeteit 1-től 'n'-ig ! Elöre is köszi! -
_eskimo
csendes tag
válasz
gabor907 #1010 üzenetére
Hát fejből nem tudom, nekem is meg kéne írni, még nem gondolkoztam ilyenen. Most nem nagyon van időm, de a későbbiekben lehet, hogy megírom majd.
Egyébként azzal fejlődik egy programozó, hogy saját maga írja a programot (itt nem arra gondoltam, hogy minden problémát egyedül kell megoldani, ha valami végképp nem megy, akkor itt vannak, akik segítenek), én pl egyébként sem látom át mások programjait. -
zolika-
csendes tag
bocsi én voltam a béna mert nem láttam hogy ez szögletes zárojel.köszi szépen még1szer.
-
zolika-
csendes tag
vmi nem stimmel ebben a sorban until ch in [ '1', '2'
;nem szereti a vesszöt sajna
-
QuarK
senior tag
-
zolika-
csendes tag
Hy.Köszi szépen a segítséget a program már müködik.Lenne itt még vmi ha a programot ugy szeretném futtatni hogy lehessen választani hogy a trapéz vagy a deltoid adatait kérje be és számolja ki akkor azt hogy lehet megcsinálni.mondjuk egy választó gomb segitségével.
-
QuarK
senior tag
válasz
zolika- #1008 üzenetére
Derékszögű trapéznál ugye az egyik oldal az maga a magasság... Ha a és b a trapéz alapjai; a c az egyik oldal, és egyben a magasság is; d pedig a negyedik oldal; akkor
k := a + b + c + d;
t := (( a + b) / 2) * c;
A deltoidnál pedig, ha a két oldala (a és b), és a közrezárt szög van megadva (u, nem radiánban, hanem fokokban megadva); akkor
k := 2 * ( a + b);
t := 3 * 4 * sin( u * pi / 180);.
Az adatokat pl. így kérheted be:
WriteLn( ''Kérem a deltoid A oldalát: '');
ReadLn( a);
Kiírni pedig pl. így:
WriteLn( ''A deltoid területe = '', t, '', kerülete = '', k);
Szerintem ennyiből már magad is össze tudod rakni, ha nagyon akarod. A deltoid területét pedig a két átló szorzatát leosztva kettővel is meg tudod kapni... De gondolom a feladat leírása csak specifikálja, milyen bemenő adatokon kell kérődznöd.
Ja, és vigyázz arra, hogy a PH! a '' macskakörömből két ' ' aposztrófot csinál.
[Szerkesztve] -
zolika-
csendes tag
Hááát azt nem tudom a feladatot nem én találtam ki de a deltoidnál emlit vmit az oldalakrol meg a zátlokrol gondolom a trapézhoz is ez kell.
-
QuarK
senior tag
[link]
Itt van, kicsit itt-ott változtattam... Ami meg Rád vár: átírni az én eljárásaim nevét magyarosabbra; plusz a sztomb, szmatrix-nál is 10-et átírni maxn-re; ugyanígy kicserélni a Place eljárásban az ex > 10, ey > 10-nél... Meg ha úgy vesszük, a flag használata is felesleges, elég tabla[?][?] := flag-et lecserélni 2-re, ha nem akarod megkülönböztetni a hajókat. És persze a tablakirajzolas eljárásban is ott vannak a 10-esek. Meg még egyéb finomságok; de amire kértél minket, hogy a hajókat el tudd helyezni, az voltaképp kész
Remélem, így már boldogulsz.
Drótszamár: ''backtrack lesz a vége...'' Ne káromkodj
[Szerkesztve] -
QuarK
senior tag
Nekem nagyon gyanús, hogy 10x10-es mezőre, 1, 2, 3, 4, 5 nagyságú hajókat elhelyezni úgy, hogy nem érhetnek egymáshoz; lehetetlen... Nagyobb mezőn a megírt algoritmus szépen lefut, de egy 10x10-esen az esetek 99%-ban az 5. hajót nem képes elhelyezni...
Ehh, talán, ha 5-től csökkenő sorrendben, visszafele próbálkoznék
[Szerkesztve]
OK; semmi...
[Szerkesztve] -
QuarK
senior tag
Öhh, most meg én voltam, aki nem olvasott figyelmesen, voltaképp majdnem ugyanarról beszélünk Drótszamár-ral?!
[Szerkesztve]
nori: Feltétlenül szükséges az az sztomb? Nem lehetne, hogy csak a tomb értéket vizsgálva írnád ki a dolgokat; mint a fenti linkelt programomban?
[Szerkesztve] -
QuarK
senior tag
válasz
Drótszamár #1000 üzenetére
Hmm... Inkább jelzőbitekkel kéne...
DONOTUSE = 1;
SHIP_1 = 2 or DONOTUSE;
SHIP_2 = 4 or DONOTUSE;
SHIP_3 = 8 or DONOTUSE;
SHIP_4 = 16 or DONOTUSE;
SHIP_5 = 32 or DONOTUSE;
Amikor ellenőrzöd, hogy lerakhatod-e a hajót, elég azt nézni, hogy az adott map[x,y] koordinátán 0-e vagy sem a tömb. Amikor pedig elhelyezed, akkor ahol a hajó van, map[x,y] = map[x,y] or SHIP_x, a környező helyeket pedig feltölteni map[x,y] = map[x,y] or DONOTOUSE... Nem?
nori: Lelkierőt veszek magamon, aztán összeheggesztem; csak rémálmaim rémálma másnak a kódját megérteni, és hozzáadni... Nem tudom, hogy fogok majd egyszer csapatban dolgozni
[Szerkesztve]
Új hozzászólás Aktív témák
- ASUS ProArt GeForce RTX 4080 SUPER OC 16GB - Garancia 2027.10.03
- iPhone 15Pro 128 GB titánkék 92% akku
- Bomba ár! HP EliteBook 2560P - i5-2540M I 4GB I 250GB I DVDRW I 12,5" HD I W10 I Garancia!
- Bomba ár! Dell Latitude E6410 - i5 I 4GB I 160GB I DVDRW I 14,1" WXGA I Cam I W10 I Gari!
- Bomba ár! Dell Latitude 7480 - i5-6GEN I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Gari!
- Prémium gépház most fantasztikus áron!
- Bomba ár! Dell Latitude E6520 - i5-2GEN I 6GB I 320GB I HDMI I 15,6" HD+ I W10 I Gari!
- BESZÁMÍTÁS! ASUS B760M i7 13700K 32GB DDR4 512GB SSD RX 6800XT 16GB Phanteks Eclipse P400 Glacier
- Bomba ár! HP EliteBook 745 G3 - AMD A10 I 8GB I 256SSD I Radeon I 14" FHD I Cam I W10 I Garancia!
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest