Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Recomandare demontare+instalare ...

CAIET SERVICE PREDEAL II

Internare spital psihiatrie

CM de snooker 2024
 Scot penele dupa montajul tamplar...

Masina de spalat vase si grasimea

Noua lege de acces in paduri

Sunt ouale proaspete?
 Aplicatie invatare limba Germana

Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile
 Primele zile ale internetului per...

Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...
 

Piatra hartie foarfece in JS

- - - - -
  • Please log in to reply
13 replies to this topic

#1
Bluy

Bluy

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 09.07.2015
Am ajuns la acest capitol pe codeacademy si nu imi iesea codul, imi dadea mereu erori asa ca m-am uitat putin la sintaxa si l-am facut singur in notepad++, mi-a iesit... insa la sfarsit am vrut sa pun o siguranta in caz ca cineva nu scrie "piatra", "hartie" sau "foarfece" in prompt si am pus in cod:

if (userChoice !== "hartie", "foarfece", "piatra") {
document.write("scrie dracului frumos");
}

si a functionat in prima parte, dar problema este ca imi apare acest document.write si in cazul in care userul introduce corect cuvintele.

Aici este tot codul...in caz ca tre'

var userChoice = prompt("piatra, hartie sau foarfece");
var computerChoice = Math.random();
if (computerChoice <= 0.33) {
computerChoice = "piatra"
}
else if(computerChoice <= 0.66){
computerChoice = "hartie"
}
else {
computerChoice = "foarfece"
}

function compare(userChoice, computerChoise) {
if(userChoice === computerChoice) {
  document.write("Egalitate");
}
else if(userChoice == "piatra") {
  if(computerChoice == "hartie") {
   document.write("cumputer a ales hartie, deci castiga");
  }
  else if(computerChoice == "foarfece") {
   document.write("computer a ales foarfece, deci pierde");
  }
}

else if(userChoice == "hartie") {
  if(computerChoice == "piatra") {
   document.write("computer a ales piatra, deci pierde");
  }
  else if(computerChoice == "foarfece") {
   document.write("computer a ales foarfece, deci castiga");
  }
}
else if(userChoice == "foarfece") {
  if(computerChoice == "piatra") {
   document.write("computer a ales piatra, deci castiga");
  
  }
  else if(computerChoice == "hartie") {
   document.write("computer a ales hartie, deci pierde");
  }
}

}
compare(userChoice, computerChoice);

EDIT: da, mi-am dat seama cat de idiot sunt, nu trebuia decat sa pun "siguranta" in interiorul functiei. Sorry for the useless topic

Edited by Bluy, 05 August 2015 - 12:33.


#2
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
userChoice !== "hartie", "foarfece", "piatra"
nu face ce crezi tu ca face

#3
Bluy

Bluy

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 09.07.2015

 sergiu_spooky, on 05 august 2015 - 13:12, said:

userChoice !== "hartie", "foarfece", "piatra"
nu face ce crezi tu ca face

Util raspuns... E ca si cum ai cere la piata 1kg de rosii si vanzatoarea iti zice 1kg nu inseamna cat crezi tu ca inseamna...dar nu iti explica mai departe, te lasa asa sa stai in ceata... de ce nu dezvolti ideea?

#4
RedDev

RedDev

    Active Member

  • Grup: Members
  • Posts: 1,933
  • Înscris: 29.10.2014
Operatorii de comparație necesită 2 operanzi. a < b sau c != d. Nu un operand și o listă. Ceea ce vrei tu să scrii e:
  • fie userChoice !== val1 && userChoice !== val2 && userChoice !== val3
  • fie faci un array de valori: [val1, val2, val3] si verifici daca userChoice nu e in acel array.

Edited by RedDev, 05 August 2015 - 13:52.


#5
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Adica ti-ar fi fost greu sa "google Javascript comma operator" ca sa inveti din documentatie ce face, nu?
Si ar trebui sa fac eu pe search engine-ul si documentatia pentru tine.

Normal, nu esti primul incepator care face greseala asta si nu e nicio problema, suntem aici sa ajutam. Dar nu esti nici primul care vrea sa-l tinem de mana pana la ultima acolada.

Opinia mea e ca ai fi invatat mai mult, inclusiv sa folosesti Google pentru a obtine lamuririle de care ai nevoie.
Tot opinia mea e ca n-ai nicio sansa in domeniu cu atitudinea asta.

Edit: hai sa o luam ca la scoala.

!== si , sunt operatori. Ca si la matematica exista niste reguli de precedenta. Aflam de aici ca !== are precedenta in fata lui ,.
Asta inseamna ca prima se executa userChoice !== "hartie". Care e fie true fie false.
Apoi se face un true/false, "foarfece", "piatra".
Care ghici ce, e evaluat ca "piatra" indiferent daca userChoice !== "hartie" e true sau false, fiindca asta face operatorul , - executa statement-urile din stanga si dreapta lui si apoi il returneaza pe ultimul. N-ai ce "executa" la un string, asa ca e returnat string-ul in sine.
Mai departe aflam tot din documentatie ca orice string cu exceptia celui gol ("") e tratat ca si true intr-un if.
Asadar conditia ta nu face nimic, codul din interiorul ei o sa se execute intotdeauna.

Edited by sergiu_spooky, 05 August 2015 - 14:10.


#6
Bluy

Bluy

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 09.07.2015

 sergiu_spooky, on 05 august 2015 - 14:01, said:

Adica ti-ar fi fost greu sa "google Javascript comma operator" ca sa inveti din documentatie ce face, nu?
Si ar trebui sa fac eu pe search engine-ul si documentatia pentru tine.

Normal, nu esti primul incepator care face greseala asta si nu e nicio problema, suntem aici sa ajutam. Dar nu esti nici primul care vrea sa-l tinem de mana pana la ultima acolada.

Opinia mea e ca ai fi invatat mai mult, inclusiv sa folosesti Google pentru a obtine lamuririle de care ai nevoie.
Tot opinia mea e ca n-ai nicio sansa in domeniu cu atitudinea asta.

Edit: hai sa o luam ca la scoala.

!== si , sunt operatori. Ca si la matematica exista niste reguli de precedenta. Aflam de aici ca !== are precedenta in fata lui ,.
Asta inseamna ca prima se executa userChoice !== "hartie". Care e fie true fie false.
Apoi se face un true/false, "foarfece", "piatra".
Care ghici ce, e evaluat ca "piatra" indiferent daca userChoice !== "hartie" e true sau false, fiindca asta face operatorul , - executa statement-urile din stanga si dreapta lui si apoi il returneaza pe ultimul. N-ai ce "executa" la un string, asa ca e returnat string-ul in sine.
Mai departe aflam tot din documentatie ca orice string cu exceptia celui gol ("") e tratat ca si true intr-un if.
Asadar conditia ta nu face nimic, codul din interiorul ei o sa se execute intotdeauna.

apai, din toate tutorialele urmarite am inteles ca !== inseamna diferit deci nu aveam de ce sa (re)caut. Totusi acum sunt si mai in ceata. Tu spui ca, codul o sa se execute intotdeauna, insa nu e asa, adica dupa ce l-am pus in interiorul functiei se executa doar cand userul introduce orice altceva decat cele 3 stringuri definite de mine, deci dupa cum observ eu functioneaza corect;)

Edited by Bluy, 05 August 2015 - 15:27.


#7
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Pai daca l-ai modificat atunci nu mai dezbatem acelasi cod, nu? Normal ca eu n-am cum sa am dreptate.
Uite, eu am luat if-ul tau si l-am testat aici.

var userChoice = "x";
if(userChoice !== "hartie", "foarfece", "piatra") {
	alert('x');
}
userChoice = "hartie";
if(userChoice !== "hartie", "foarfece", "piatra") {
	alert('hartie');
}

alert((userChoice !== "hartie", "foarfece", "piatra"));



E clar acum? Indiferent de ce valoare ii dai lui userChoice, alert-ul se executa.
In plus, al 3-lea alert o sa contina string-ul "piatra", adica exact ce vorbeam eu mai sus.

Repet, normal ca daca ai modificat codul nu mai am dreptate, pun pariu ca acu o sa-mi dai un copy paste cu asta
if(userChoice !== "hartie" && userChoice !== "foarfece" && userChoice !== "piatra") {
si o sa-mi spui ca-s eu rau.

#8
adyyy

adyyy

    Member

  • Grup: Members
  • Posts: 531
  • Înscris: 26.06.2006
Acum e vorba de o chestiune simpla, dar daca e vorba de chestii mai complicate, faptul ca functioneaza codul pt 1,2,3 teste pt care tu vrei sa vezi rezultatul, inseamna ca e si bun codul, daca el sfideaza niste aspecte?

Intrebarea e pt op.

#9
Bluy

Bluy

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 09.07.2015

 sergiu_spooky, on 05 august 2015 - 17:43, said:

Pai daca l-ai modificat atunci nu mai dezbatem acelasi cod, nu? Normal ca eu n-am cum sa am dreptate.
Uite, eu am luat if-ul tau si l-am testat aici.

var userChoice = "x";
if(userChoice !== "hartie", "foarfece", "piatra") {
alert('x');
}
userChoice = "hartie";
if(userChoice !== "hartie", "foarfece", "piatra") {
alert('hartie');
}

alert((userChoice !== "hartie", "foarfece", "piatra"));



E clar acum? Indiferent de ce valoare ii dai lui userChoice, alert-ul se executa.
In plus, al 3-lea alert o sa contina string-ul "piatra", adica exact ce vorbeam eu mai sus.

Repet, normal ca daca ai modificat codul nu mai am dreptate, pun pariu ca acu o sa-mi dai un copy paste cu asta
if(userChoice !== "hartie" && userChoice !== "foarfece" && userChoice !== "piatra") {
si o sa-mi spui ca-s eu rau.

 sergiu_spooky, on 05 august 2015 - 17:43, said:

Pai daca l-ai modificat atunci nu mai dezbatem acelasi cod, nu? Normal ca eu n-am cum sa am dreptate.
Uite, eu am luat if-ul tau si l-am testat aici.

var userChoice = "x";
if(userChoice !== "hartie", "foarfece", "piatra") {
alert('x');
}
userChoice = "hartie";
if(userChoice !== "hartie", "foarfece", "piatra") {
alert('hartie');
}

alert((userChoice !== "hartie", "foarfece", "piatra"));



E clar acum? Indiferent de ce valoare ii dai lui userChoice, alert-ul se executa.
In plus, al 3-lea alert o sa contina string-ul "piatra", adica exact ce vorbeam eu mai sus.

Repet, normal ca daca ai modificat codul nu mai am dreptate, pun pariu ca acu o sa-mi dai un copy paste cu asta
if(userChoice !== "hartie" && userChoice !== "foarfece" && userChoice !== "piatra") {
si o sa-mi spui ca-s eu rau.

nu, de fapt iti dau copy paste cu: var array = ["piatra", "hartie", "foarfeca"];

function compare() {
if(userChoice !== array) {
document.write("Scrie corect");
}
}

In fine, important este ca am inteles, acum putem trai cu totii fericiti.
Merci pentru raspunsuri!

Edited by Bluy, 05 August 2015 - 18:33.


#10
DILAS

DILAS

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 03.12.2007
vezi ca arrays nu se compara cu operatori de tip !==. check this out
daca vrei sa verifici ca un string e intr-un array poti folosi indexOf, asta daca nu sustii IE antic.

dupa ce termini tutorialele pe code academy poate ar fi bine sa iei o carte serioasa gen Professional js for web devs de Zakas, third edition. O gasesti gratis pe net.

Edited by DILAS, 05 August 2015 - 22:54.


#11
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006

 Bluy, on 05 august 2015 - 18:32, said:

nu, de fapt iti dau copy paste cu: var array = ["piatra", "hartie", "foarfeca"];

function compare() {
if(userChoice !== array) {
document.write("Scrie corect");
}
}

In fine, important este ca am inteles, acum putem trai cu totii fericiti.
Merci pentru raspunsuri!

:))) Serios? Am vrut sa dau dovada de bunavointa desi stiam ca-mi pierd timpul.
!== comapara referintele si tipurile. Un string n-are cum sa fie === cu un array, niciodata, fiindca sunt tipuri diferite.

Anyway, ai o atitudine foarte gresita fata de tine, noi care-am incercat sa te ajutam si nu in ultimul rand codul pe vrei sa-l scrii.
Probabil cu asta ar trebui sa incepi, nu cu Javascript.

#12
Bluy

Bluy

    Junior Member

  • Grup: Junior Members
  • Posts: 41
  • Înscris: 09.07.2015

 sergiu_spooky, on 06 august 2015 - 10:07, said:


Posted Image)) Serios? Am vrut sa dau dovada de bunavointa desi stiam ca-mi pierd timpul.
!== comapara referintele si tipurile. Un string n-are cum sa fie === cu un array, niciodata, fiindca sunt tipuri diferite.

Anyway, ai o atitudine foarte gresita fata de tine, noi care-am incercat sa te ajutam si nu in ultimul rand codul pe vrei sa-l scrii.
Probabil cu asta ar trebui sa incepi, nu cu Javascript.
Ma vere... eu cu greu inteleg ceva din ce explici tu acolo, sa zicem ca is eu mai greu de cap (sau tu prea inteligent si sofisticat in cuvintele-ti, sau amandoua) Oricum, sa stii ca chiar daca sunt nou pe forum, de cativa ani buni de cand am pc, in diferite search-uri pe domenii foarte diferite(am dat de forumul asta) am remarcat cum, orice incepator in orice domeniu este calcat in picioare de veteranii domeniului respectiv si este facut sa para prost, si sa renunte la orice idee ar avea.

#13
DILAS

DILAS

    Member

  • Grup: Members
  • Posts: 320
  • Înscris: 03.12.2007
@bluy da intr-adevar exista o anumita aroganta in reply-uri de multe ori pe softpedia. daca esti obisnuit cu forumurile de afara stii despre ce vb. stiu ca e iritant cand esti tratat cu aroganta de unu pe forum, dar gandeste-te ca e posibil sa aiba 30% dreptate in ce zice si daca are macar 30% incearca sa iei ce e ok and discard the rest Posted Image


anyways, nu e important cine are dreptate si cine greseste, ideea ramane, e bine ca incerci sa inveti programare si ca ai inceput cu codeacademy, dar e mai bine sa citesti o carte de genul celei recomandate de mine cap-coada si sa incerci sa scrii si cod in acelasi timp. din ce spui esti foarte la inceput si chiar ai nevoie de asta.

Edited by DILAS, 07 August 2015 - 08:52.


#14
sergiu_spooky

sergiu_spooky

    Senior Member

  • Grup: Senior Members
  • Posts: 3,738
  • Înscris: 23.06.2006
Problema e la tine "vere", nu la mine. Cand in loc sa spui "imi explici te rog ce-ai vrut sa spui prin X" incepi sa te plangi ca nu-s muieti posmagii sau sunt arogant normal ca te tratez altfel.
Probabil nu intelegi, dar eu nu sunt platit si nici obligat sa te ajut. Iti ofer un serviciu gratuit, din placere si pasiune, de calitate zic eu. E treaba ta sa profiti, nu a mea sa te tin de mana.
Cand din ecuatie dispare placerea, adica faci ce faci tu, nu prea imi mai raman motive sa-mi bat capul. Greseala mea, probabil trebuia sa renunt de mult.
Nu suntem la scoala, e datoria ta sa alegi ce e bun din ce spun eu si sa ramai cu ceva.

Asadar, in loc sa spui "eu cu greu inteleg ceva din ce explici tu acolo" ai putea sa faci minimul efort.
Am spus ca "!== comapara referintele si tipurile". Ce inseamna a compara ma gandesc ca e clar. Ce e o referinta si ce e un tip in Javascript? Sunt printre chestiile alea de baza pe care le citesti in documentatie sau in orice carte.
Exceptand situatia cand deschizi un topic in care spui "Imi explica cineva ce e aia o referinta, da mai pe cuvintele mele?" eu nu o sa ma apuc sa-ti prezint teoria chibritului pentru toate chestiile pe care le consider _fundamentale_ si pe care-ar trebui sa le stapanesti inainte sa te apuci tu de scris cod care chiar face ceva.

Legat de cine are dreptate pe chestiile tehnice te asigur ca eu sunt acela. Mai am si eu scapari, dar in cazul asta lucrurile sunt atat de clare ca pot si noaptea in vis sa-ti explic cu lux de amanunte ce gresesti si cum e bine.

Edited by sergiu_spooky, 07 August 2015 - 10:03.


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate