- Az eddigi legjobb S26 Ultra renderkép
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Apple Watch Ultra - első nekifutás
- Telekom mobilszolgáltatások
- Szerkesztett és makrofotók mobillal
- Apple iPhone 17 Pro Max – fennsík
- Határtalan erő - szabadjára engedve
- Samsung Galaxy S24 - nos, Exynos
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
Új hozzászólás Aktív témák
-
cucka
addikt
válasz
Tangerine #1268 üzenetére
szorzás függvényed finoman szólva érdekes
működni nyilván működik, de ez inkább csak számjeggyel való szorzásra alkalmas.
ezekkel a függvényekkel egyébként elég egyszerű megírni a számrendszer átalakítást.
a,e,h:string; {a:6os számrendszerbeli szám, e:eredmény, h:6 aktuális hatványa }
i:integer;
h:='1';e:='0';
for i:=length(a) downto 1 do
begin
e:=osszead(e, szoroz(h, a[ i ]));
h:=szoroz(h,6);
end;
[Szerkesztve] -
cucka
addikt
válasz
Tangerine #1268 üzenetére
6 hatványaiból elég csak az aktuálisat tárolni.
kezdetben ugye 6^0=1-el szorzunk. utána 6^1=6-al utána 36, 216, stb.
legyen egy változód (szintén nagyszám típusú), kezdőértéke legyen 1. minden egyes lépés után szorozd meg 6-al, így mindig meglesz az aktuális művelethez szükséges 6^x érték. kódodat hamarosan megnézem. -
cucka
addikt
válasz
Tangerine #1266 üzenetére
a legkézenfekvőbb, nem túl elegáns viszont újrafelhasználható kódot produkáló elgondolás:
a számrendszerek közötti átváltáshoz összeadásra és szorzásra van szükség. a szorzás visszavezethető összeadásra és számjeggyel való szorzásra.
először is: ajánlom, hogy tömb helyett string-ben tárold a hosszú számaidat, ott ugyanis a string[ 0 ] jelöli a hosszát, könnyebben tudsz számolni vele. (ha jól emlékszem, tömbnél nincs ilyen)
tehát ami kell:
- függvény ami megszoroz egy számot egy számjeggyel. a szám természetesen string/tömb, ezért számjegyenként kell megszorozni, tárolva azt a számjegyet, amit átviszünk.
- függvény ami összead két nagy számot - szintén számjegyenként, tárolva a számjegyet amit átviszünk. ügyelni kell arra, hogy ugyanolyan hosszúak legyenek, tehát a rövidebben ki kell egészíteni balról 0 számjegyekkel.
- függvény ami hozzáilleszt néhány nullát egy nagy számhoz (átírja a string hosszát, 0-kat pakol a végére) - ez a szorzáshoz kell.
a szorzás pl. valami hasonló lesz (ez nem feltétlenül helyes pascal kód, inkább csak szemléltetés)
a, b, eredmeny:nagyszam;
eredmeny:=''0'';
for pos:=length(b) downto 1 do
begin
eredmeny:=osszead(hozzair(szamj_szoroz(a,b[ pos ])),length(b)-pos);
end;
pos jelöli, b végétől számítva hanyadik számjegynél tartunk
vagyis megszorozzuk a-t b aktuális, pos által jelölt számjegyével, az eredményhez jobbról hozzáírunk annyi nullát, ahányadik karakternél tartunk éppen (length(b)-pos) és az egészet hozzáadjuk az eredményhez (ami ugye kezdetben nulla).
a többi függvény megírása ennél egyszerűbb szerintem, azt rád bízom. -
cucka
addikt
válasz
Tangerine #1255 üzenetére
ha a feladatban külön említik, hogy 60 jegyű számokra is kell működjön, akkor azt azért teszik, hogy ne lebegőpontosan tárold a számokat, hanem tömbben. az eredeti számot és az eredményt (ami olyan 30-40 számjegy lehet max.) is.
a tömb i-ik elemét (ami ugye karakter típusú) így alakíthatod számmá:
szam:=ord(tomb[ i ])-ord('0')
így ki lehet kerülni a körülményes és lassú strtoint (?) függvényt.
8 éve nem láttam pascal-t, remélem azért jól emlékszem
[Szerkesztve] -
VladimirR
nagyúr
-
VladimirR
nagyúr
válasz
Tangerine #1233 üzenetére
ha megnezed, az ups-nek nem adtam kezdoerteet, igy az elvileg (gyakorlatilag nem mindig) ures string-kenbt kezd, s hiaba toltod bele a karaktereket, a string hossza marad 0
ha a sztring-edet a hagyomanyos uton (tehat pl sztringosszefuzessel), nem pedig karakterenkent rakod ossze, akkor erre nincs szukseg, a string hossza (elso byte-ja) amutomatikusan megvaltozik
probald ki a fenti kodot az emlitett sor nelkul
(egyebkent ez az oka a string 255 karakteres hosszkorlatozasanak: egy byte-on nem tudsz nagyobb hosszt megadni
c-ben ezzel szemben ilyen korlat nincs, hisz ott nem tarolod a string hosszat a veget egy null ( \0 ) karakter jelzi
[Szerkesztve] -
VladimirR
nagyúr
válasz
Tangerine #1227 üzenetére
behuzas: karakterekkel toltom fel a sor elejet (a nem torheto szokoz html kodja)
[i]-k: a szogletes zarojelen belulre valahova teszek egy [b][/b] kodot (itt is van mindkettoben, csak nem latszik), igy a forummotor nem alakitja at
aztan az egeszet jol letesztelem ezzel, hogy biztos jo legyen => Bovebben: [link] (hsz vege - ez itt a reklam helye)
#1227: jo a readkey is (csak foloslegesen csak emiatt be kell include-olni a crt egyseget) -
VladimirR
nagyúr
válasz
Tangerine #1225 üzenetére
de, mukodne igy is
az ups[0] := s[0] pedig azert kell, mert mivel uj valtozot hasznalok, be kell allitani annak hosszat
pascalban a c-vel ellentetben nem nullterminated stringek vannak, hanem a string elso byte-ja (0. index) tartalmazza annak hosszat
enelkul az ups hiaba tartalmazna a megfelelo karaktereket, ures stringet kapnank vissza, mivel a hosszat nem allitottuk be (esetleg a kivant string elejet, vagy az egeszet valami szemettel megtoldva, amennyiben a valtozot nem inicializaltuk, s az altala hasznalt memoriateruleten volt mar korabban adat, ekkor ugyanis a string hossza a 0. indexen levo karakterbol adodik, amihez ugye mi nem nyultunk hozza)
[Szerkesztve] -
Lortech
addikt
válasz
Tangerine #1202 üzenetére
Persze, fájlból, de attól függetlenül az adatfolyamot ugyanúgy dolgozza fel a read. Nekem is furcsa volt, és nem hittem volna, míg ki nem próbáltam. Viszont miután saját szememmel láthattam működni, kénytelen voltam elhinni, és kicsit átgondolva már tök logikus.
Tyreal: nem így gondoltam, nem kell csekkolnia az időt, hanem mivel a nop is órajelbe kerül, ezért ki lehet számítani mennyi időhöz mennyi kell. Ebből volt a gubanc a delay-jel, hogy az új gyors gépeken hibásan működött. Az architektúrák tanárom jól el tudná mondani, én már nem emlékszem rá annyira, hogy belemenjek. Hátha Rover623 kolléga bevállalja.
[Szerkesztve] -
Lortech
addikt
válasz
Tangerine #1192 üzenetére
Tökéletesen működik Screammm megoldása, sem a szóközöket nem konvertálja és rakja a tömbbe, sem a sorvégéket, az érdekes is lenne.
A read fgv-ben keresendő a megoldás.
pl van egy i,j:byte-od
és read(i,j);
ekkor bevitelkor vagy beírsz két számot szóközzel (akárhánnyal) elválasztva, vagy az egyik, aztán enter, úgy a másikat, és megint enter. Ekkor megjelenik i,j-ben a számérték, ha azt adtál meg, ha nem, akkor futási hiba. Ha úgy működne ahogy te leírtad, akkor az enter, kódja kerülbe bele a változóba, vagy mi, az meg hülyeség.
[Szerkesztve] -
Lortech
addikt
válasz
Tangerine #1184 üzenetére
Vazz, mi meg megcsináltuk a nehezebb megoldással. Gondolj csak bele, hogyan működik a read, mikor billentyűzetről olvasol be vele egy egész típusba, esetleg több változót. Ha írsz pár szóközt, aztán a számot, az úgy teljesen ok. Itt is ezért működhet. Ha már más lenne az elválasztó karakter, akkor nem működne.
Furcsa is volt, hogy egy viszonylag ''nehezebb'' dolgot adtak érettségin. -
norbiphu
őstag
válasz
Tangerine #1184 üzenetére
Nekem sem sikerült először megoldanom, mert szóközökkel van elválasztva meg új sorokat kell kezdeni. Gondolom azért működik, mert a tömb úgyis byte típusú tehát a szóközöket úgysem tudja beolvasni ezért kihagyja
.
Az eredmény jó, helyesen olvassa be, leellenőriztem.
[Szerkesztve] -
Tangerine
senior tag
válasz
Tangerine #1171 üzenetére
Akkor először csinálnék egy függvényt, ami visszaadja a beolvasott sorból az x-edik számot:
function szam(sor:string; hely:integer): integer;
var
i,sz,kod : integer;
begin
sor := trim(sor)+' ';
if hely > 1 then
for i := 1 to hely-1 do delete(sor,1,pos(' ',sor));
val(copy(sor,1,pos(' ',sor)-1),sz,kod);
szam := sz;
end;
var
het,x: integer;
lottosz : text;
egyhuzas: string;
lottotomb: array [1..52][1..5] of integer;
assign(lottosz,'C:\lottosz.dat');
reset(lottosz);
het := 1;
while not eof(lottosz) do
begin
readln(lottosz,egyhuzas);
for x:= 1 to 5 do lottotomb[het][x] := szam(egyhuzas,x);
inc(het);
end;
close(lottosz);
[Szerkesztve] -
KMan
őstag
válasz
Tangerine #1160 üzenetére
Koszi, minnel elobb ki fogom progalni.
Mas(ez mar tenyleg tomb):
Array[1..5] of integer =('12','43','11','42','5');
Mi lenne a legegyszerubb es nem tul bonyolitott algoritmus a rendezesre? novekvo es csokkeno is kellene.
Brobalkoztam a minimum kivalasztasossal, a buborekossal es meg az indexvektorossal is, de nem megy. reszemrol mind1 hogy magat a tombbot rendezi, vagy pedig indexvektorral.
?
Új hozzászólás Aktív témák
- Marvel Snap
- Battlefield 6
- Milyen program, ami...?
- Mazda topik
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- Az eddigi legjobb S26 Ultra renderkép
- One otthoni szolgáltatások (TV, internet, telefon)
- Okos Otthon / Smart Home
- Amlogic S905, S912 processzoros készülékek
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- AKCIÓ!!! Új Sonos Ace - letisztult, vezetéknélküli fejhallgató Dolby Atmos hangzással, 30 óra aksi
- ÚJ iPhone 16 Pro Max 256GB Black Titanium (1 év Apple Care+)
- GAMING PC! Ryzen 7 5800x , Radeon RX6700XT, 32Gb RAM
- ASUS VZ24EHE 1080p / 75Hz / 60cm (23,8") IPS /1ms válaszidő / Gamer funkciók / FreeSync
- MSI MECH 2X RX 6600 XT - eladó!
- Sima Vs.Windows Logitech Mx keys s plus és hagyományos Mx keys magyar bemutatása. Új videó linkel
- 2db Apple Lightning - jack átalakító eladó egyben 1999 Ft
- AeroCool Saturn 12F ARGB Pro 3db 120mm rendszer hűtő + 3 db jár hozzá+2 távirányitó +még 1 vezérlö
- Dell Precision 5820 XL PC - Xeon W-2123 112GB RAM 512GB SSD 1TB HDD RX 580 GTS 8GB Win 11
- MacBook Air 9,1 i3-1000NG4 8GB 256GB
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest