Mi a különbség a két kód között? (pascal, érettségi)
Ez a sajatom
Ez a hivatalos megoldas
Bemasolva a sajat programomba tokeletesen mukodik es en nem latok kulonbseget. Ez az utolso feladat a 2006 majusiba.
Segitsetek legyszi.
D
T
H
K
S
E
I
A
H
R
F
K
D
L
ez az elso par karaktere a tombnek most neztem hogy 9x fut le és inkrementalja a j-t 10-re es akkor dob ki a ciklusbol. a 10. karakter pedig pont az R szoval a while feltetelnek csak a <> 'R' resze teljesul a tobbit mintha nem is vizsgalna
Mint irtam nem jó a while feltételed.
Egy delphi consolos applikációba ültettem át a dolgot (és beirtam az elő karakterek közé két C betűt, illetve a végére egy R és egy V-betűt , hogy kilépjen), igy a #9-es hozzászólásomban levezetett feltétellel ( A Tiedhez képest az AND és az OR van megcserélve) tökéletesen működik. : [link]
Sok sikert.
üdv.
es tenyleg mukodik nagyon szepen koszonom
viszont egyaltalan nem ertem hogy miert. marmint mer kellett kicserelni az and-et es az or-t?
a repeat untilos feltetelt tudtam ertelmezni viszont ennek igy szamomra nincs sok ertelme ha tudnal fuzni meg hozza egy kis magyarazatot megkoszonnem
Elvileg a #9-es hozzászólásomban leirtam az untilból kiiindulva, de most hogy már meg van fogalmazva a feladat ezek alapján is végig lehet menni rajta :
"a feladat az hogy van ez a BSA tomb amiben egymas utan karakterek vannak es addig kene szamolnia a C karaktereket amig nem fut bele egy R karakterbe amit vagy egy 'A' vagy egy V' követ."
Tehát előltesztelős (While) ciklusnál a belépési feltételt kell megfogalmazni (és nem a kilépésit mint az until-nál) :
Tehát akkor lép be ha a vizsgált karakter nem 'R' (BSA[i]<>'R') ÉS az azt követő karakter pediglen nem 'A' (BSA[i+1]<>'A') VAGY nem 'V' (BSA[i+1]<>'V'), ellenkező esetben (tehát RA vagy RV karakterek esetén nem kell végrehajtani a ciklust)
Ha ezeket összerakod akkor megkapod a feltételt :
(BSA[i]<>'R') AND ((BSA[i+1]<>'A' OR BSA[i+1]<>'V'))
Üdv.
Látod ugyanabba a hibába kerültem mint Te (mivel a logika ezek szerint ezt diktálja) ugyanazt a rossz feltételt hoztam össze mint Te : (BSA[i]<>'R') AND ((BSA[i+1]<>'A' OR BSA[i+1]<>'V'))
Fogalmazzuk át : RA és RV ésetén nem hajtódik végre a ciklus vagy kilép a ciklusból :
NOT (((BSA[i]='R') and ((BSA[i]='A')) or ((BSA[i]='R') and ((BSA[i]='V')))
ha ezt a fenti egyenleted megoldod akkor kapod meg a feltételt (annyira már nem megy a logikai egyenletek megoldása) de szerintem az jön ki aminek kell.
Üdv.
Késő van, fáradok :
Ez a feltétel ezt kell megoldani :
NOT (((BSA[j]='R') and (BSA[j+1]='A')) or ((BSA[j]='R') and (BSA[j+1]='V')))
Üdv.
Köszönöm, értem.
Nagyon sokat segítettél.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!