- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- ThinkPad (NEM IdeaPad)
- AMD vs. INTEL vs. NVIDIA
- 5.1, 7.1 és gamer fejhallgatók
- Milyen monitort vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Kormányok / autós szimulátorok topikja
- Épített vízhűtés (nem kompakt) topic
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- Projektor topic
-
PROHARDVER!

Új hozzászólás Aktív témák
-
vz12
tag
válasz
janos1988
#14178
üzenetére
A "+1", "-1' nem fétis, hanem fontos eleme a működésnek, nevezhetjük trükknek, de igazából ez szükségszerű. Ha belegondolsz és megérted a miértjét, szerintem el fogod ezt ismerni.
A programom ugye alapvetően nem karakterenként, hanem szavanként szeleteli le az input szöveget, pontosabban szóköztől szóközig. Minden lépésben megkeresi a következő szóközt, viszont a megtalált szónak ez a szóköz már nem része, ezért van a "-1". A "szeletelésnél" (delete) viszont nem csak tisztán a szót, hanem a megtalált szóközt is le kell szedni a szöveg elejéről, ezért van a "+1".
Ezt nem úgy kell nézni, hogy 1-1 = 0 és ennyi, nem. A folyamat (ciklusmag) végén 1-1 = 0, ez rendben van, de ez nem azt jelenti, hogy működés közben a "mikrokörnyezetben" ez végig így van.
Csak a végén.
Közel kell menni a részletekhez hogy megértsük a dolgokat, a működést nem (mindig) lehet "távolról" nézni, vagy átlagolni, ahol már összemosódnak a részletek. Pl. ha fociban egy játékos egy meccsen rúgott 2 db gólt tizenegyesből, az ugyanaz, mint ha az egyiket a kapu mellé rúgta balról 1 méterrel, a másikat a kapu mellé rúgta jobbról 1 méterrel, vagyis átlagban 2 gólt rúgott a kapu közepébe ... (?)
A "tmp" változó a függvényemben a jelen esetben nem szükségszerű, mert az eredeti input szövegre menet közben nincs szükség, de más esetben előfordulhatna hogy szükség van rá, ezért én szeretem így csinálni. De itt, most ez valóban tűnhet feleslegesnek.
A tömböket én mindig nullázom induláskor, régebben ez szükségszerű volt (mert nem lehetett arra számítani, hogy 0-val indulnak), az "újabb" pascal verziókban (TP 7.0-tól kezdve) úgy tudom hogy ez a probléma már nincs meg, ez is csak egy (jó) szokásom. Persze az is lehet hogy nem 0 a tömbelemek kezdeti értéke, akkor mindenképpen inicializálni kell, én ezt inkább rutinszerűvé tettem, ennyi.
A "delete(tmp,1,pos1)" az általam írt szóköz végű inputtal jó (mondjuk rá), de ha nem szóközre végződik (azaz normális esetben) NEM JÓ, úgy kell ahogy én csináltam. Próbáld ki az én programomat olyan input szöveggel, aminek a végén nincsenek szóközök (egy sem). Sőt, a "delete(tmp,1,pos1+1)" sem jó. Meg lehet érteni, hogy miért van ez így, de ezt az olvasóra bízom.

-
janos1988
addikt
válasz
janos1988
#14178
üzenetére
Kisebb sikerélmény, sikerült megoldani a szóközöket.
program szoveg_bontas;function bontas(s1:string;var pos1:integer):string;beginbontas:='';while (s1[pos1]<>#32) and (pos1<>length(s1)+1) dobeginbontas:=bontas+s1[pos1];inc(pos1);end;if s1[pos1]=' ' then inc(pos1);end;vars2,s3:string;pos2,t,i:integer;tomb:array [1..10] of string;beginpos2:=1;t:=1;s2:=' Ez megint egy szep hosszu proba mondat.';repeats3:=bontas(s2,pos2);if s3<>'' thenbegintomb[t]:=s3;inc(t);end;until pos2>length(s2);for i:=1 to t do writeln(tomb[i]);end.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Spórolós topik
- Samsung Galaxy S25 - végre van kicsi!
- Kamionok, fuvarozás, logisztika topik
- World of Tanks - MMO
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Luck Dragon: Asszociációs játék. :)
- ThinkPad (NEM IdeaPad)
- sziku69: Fűzzük össze a szavakat :)
- Sajnos nem lesz ott a The Game Awards-on a The Witcher 4
- AMD vs. INTEL vs. NVIDIA
- További aktív témák...
- Apple iPhone 17 Pro Silver 256 GB Használt, karcmentes 100% akku / 0 ciklus 1 év gari!
- Surface Pro 7+ i5-1135G7 16GB 1000GB 1 év garancia
- Surface Pro 7+ i5-1135G7 16GB 512GB 1 év garancia
- Surface Pro 7+ i5-1135G7 16G 256GB 1 év garancia
- Samsung Galaxy S25 Edge Titanium Jetblack 12/256 GB Használt, karcmentes 6 hónap garancia
- VADIÚJ Bontatlan! Honor 400 Lite 8/256 AMOLED 120Hz Velvet Grey, Dual SIM 2év gar
- Újszerű HP 250 G10 - 15.6"FHD IPS - i5-1334U - 8GB - 512GB - Win11 - 1,5 év garancia - MAGYAR
- Eladó Samsung Galaxy S23 8/256GB / 12 hó jótállás
- HP 200W töltők (19.5V 10.3A) kis kék, kerek, 4.5x3.0mm, 928429-002
- ÚJ Lenovo ThinkPad X13 Gen 5 - 13.3" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: BroadBit Hungary Kft.
Város: Budakeszi

Csak a végén.



