Peršokti į turinį

Dėl C++ sąlygos tikrinimo ir reiškinio neigimo


Floatas

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2525 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki.

Turiu dvieju objektu pozicija (x ir y) ir kol abu objektai nera toje pacioje vietoje man reik ,kad vyktu while ciklas ir vienas objektas judetu.

Tai va , mano while ciklas sustoja kai abieju objektu x arba y sutampa , o man reikia ,kad sustotu tada ,kai abu x ir y  sutampa arba kai nera daugiau kur eiti.

 

Kur darau klaida:

while(((bender_pos[0][0] != deathBooth_pos[0][0]) && (bender_pos[0][1] != deathBooth_pos[0][1])) && !noMovesToMake)
Redaguota , nario Tautedorus
Nuoroda į komentarą
Dalintis per kitą puslapį

O kam tau dvimatis masyvas pozicijai saugoti? Juk tai dvi reikšmės dvimatėje koordinačių sistemoje. Šiaip, klaidą padarei neigdamas reiškinį. Ką turiu omeny? Tu nori, kad ciklas sustotų, kai pozicijos sutampa. Tad norint, kad ciklas suktųsi, reikia taikyti neigimą, t.y. pozicijos turi nesutapti. Teisingai, bet neigdamas reiškinį pamiršai uždėti neigimą ant AND operatoriaus. Paneigus AND operatorių, gauname OR operatorių. Nepaneigęs operatorių pažeidei De Morgano taisyklę ir gavai klaidingas reikšmes. Patariu paskaityti apie teiginių logiką. Taip pat, nenaudok loginio tipo kintamųjų su atvirkščia reikšme, nes sunkiau suprasti logiką. Tavo atveju, tai noMovesToMake kintamasis. Pateiksiu du kodus, kurie yra ekvivalentūs, kad būtų lengviau suprasti. Juose naudojau objektus, kad, vėlgi, būtų lengviau suprasti.

while (((firstObject.abscissa != secondObject.abscissa) || (firstObject.ordinate != secondObject.ordinate)) && coordinatePlane.availableMoves) {}
while (!(((firstObject.abscissa == secondObject.abscissa) && (firstObject.ordinate == secondObject.ordinate)) || !(coordinatePlane.availableMoves))) {}

Matai, neigimas čia apverčia visus operatorius, kaip ir parodyta paveikslėlyje:
600px-Demorganlaws.svg.png

Redaguota , nario Tautedorus
  • Teigiamai 1
Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 2525 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Svečias
Ši tema yra užrakinta.

Skelbimai


×
×
  • Sukurti naują...