-
Fototrend

Új hozzászólás Aktív témák
-
vz12
tag
válasz
janos1988
#14151
üzenetére
Az első megoldás (is) majdnem jó, teljesen végigmegy a mondaton, a "pont" is megvan a végén, csak éppen nem írja ki az utolsó szót. A szg. ugye nem a kívánságaink, hanem az utasításaink szerint működik, tehát ha nem írja ki a gép, akkor az azért van, mert nem lett megmondva neki.
Nos, akkor mondjuk meg neki, az első megoldást egészítsd ki a for ciklus után, az "end." előtt a következővel:if (s2<>'') then writeln(s2);
-
kovisoft
őstag
válasz
janos1988
#14151
üzenetére
Alapvetően az a probléma mindkét megoldásoddal, hogy az a feltétel, ahogyan vizsgálod az új szó kezdetét, az nem érvényes a string legvégén. A szöveg közepén amikor a szóköz jön, akkor az aktuális előtt lévő karakter a szó utolsó betűje, amikor viszont a szöveg utolsó karakteréhez értél, akkor ez nem igaz, mert ott az aktuális karakter a szó utolsó betűje.
Az első változatodban figyelmen kívül hagyod azt, hogy a szöveg végén nem lesz szóköz, tehát ott marad a "levegőben" még az utolsó szó, amivel nem csinálsz semmit. Ezt még valahogy le kellene kezelni a ciklus után.
A második változatodban valami ilyesmit csinálsz: a szónak akkor van vége, ha szóköz karakter jön vagy ha a szöveg utolsó karaktere jön. De ez nem igaz, mert így kimarad a legutolsó karakter. Ehelyett valami ilyesmit kell csinálnod: a szónak ez az utolsó karaktere, ha tart még tovább a szöveg és szóköz lesz a következő, vagy ha ez a szöveg utolsó karaktere. Az nem korrekt megoldás, hogy túlfuttatod a ciklust, legfeljebb akkor, ha gondoskodsz róla, hogy a túlfuttatott n+1. tömbelemre semmiképpen sem fogsz hivatkozni.
A többieknek: ez Pascal-szerűség, itt 1-től indul a ciklus.
-
janos1988
addikt
válasz
janos1988
#14151
üzenetére
A . lemaradása már megvan, mert ha a for ciklus elér a 45. lefutáshoz akkor i<>45 hamis (mivel i=45) lesz így már a feltétel is hamis lesz, azaz else ág. Na de, hogy tudom mégis kiíratni.

Szerk.: Ha a for ciklushoz hozzáadok egyet for i:=1 to length(s1)+1 és a kiértékeléshez is (i<>length(s1)+1) akkor minden okés. De szerintem ezt nem így kell(ene) megoldani, hogy túlfuttatom a cilust.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Elektromos rásegítésű kerékpárok
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Luck Dragon: Asszociációs játék. :)
- Renault, Dacia topik
- Kötelező frissítésnek számít a Microsoft legújabb csomagja a Windows 11-hez
- sziku69: Fűzzük össze a szavakat :)
- LEGO klub
- sziku69: Szólánc.
- Filmvilág
- Milyen autót vegyek?
- További aktív témák...
- ELADÓ AcerSwift3 (14" / AMD Ryzen 5 4500U / 16GB RAM / 512GB / HU)
- Latitude 5440 14" FHD IPS i7-1365U 16GB 512GB NVMe ujjlolv IR kam gar
- GAMER PC! i5-13500 / RTX 3070 Ti / 16GB DDR / 512GB NVMe / 650w!
- Eladó Precision 7540 FHD IPS i7-9850h Radeon Pro WX 3200 32 512 magyarított bill + külső hangkártya
- Kingston HyperX FURY RGB 2x16GB DDR4 3200MHz CL16 Eladó!
- BESZÁMÍTÁS! MSI B450M R5 3600 16GB DDR4 512GB SSD RTX 3050 8GB Formula Air Mesh G3 Seasonic 450W
- Prémium minőségű HOFI üvegfóliák Tech Protect tokok és 20W Adapterek iPhone 13 14 15 16 17 szériához
- BESZÁMÍTÁS! Akár Részletfizetés 0% THM ÚJ AMD RYZEN AM5 processzorok 3 év garanciával 27% áfaval
- ÚJ Lenovo IdeaPad Slim 3 - 15.3" WUXGA - Snapdragon X X1-26-100 - 24GB - 1TB - Win11 - Garancia
- Eladó Samsung Galaxy A55 5G 8/256GB fekete / 12 hónap jótállás
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


