- Fujifilm X
- HiFi műszaki szemmel - sztereó hangrendszerek
- AMD GPU-k jövője - amit tudni vélünk
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Hobby elektronika
- Milyen billentyűzetet vegyek?
- Melyik tápegységet vegyem?
- Kutyának sem kellenek a 8 GB-os VGA-k?
- Fejhallgató erősítő és DAC topik
Ú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.![;]](//cdn.rios.hu/dl/s/v1.gif)
[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
- Konzolokról KULTURÁLT módon
- PlayStation 4
- Fujifilm X
- HiFi műszaki szemmel - sztereó hangrendszerek
- Battlefield 6
- Tőzsde és gazdaság
- LED világítás a lakásban
- AMD GPU-k jövője - amit tudni vélünk
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Samsung Galaxy S21 Ultra 5G / 12/256GB / Kártyafüggetlen / 12Hó Garancia
- Apple iPad air 4 64GB,Újszerű,Dobozával,12 hónap garanciával
- Xbox Series S 512 GB + kontroller 6 hó garancia, számlával!
- 129 - Lenovo Legion Pro 7 (16ARX8H) - AMD Ryzen 9 7945HX, RTX 4080 (FOGLALVA)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest




)
![;]](http://cdn.rios.hu/dl/s/v1.gif)
.
Koszi, minnel elobb ki fogom progalni.

