Cod JavaScript Problema

O funcție numită calculAriaPatrat calculează, așa cum îi zice și numele, aria unui pătrat și are nevioe de exact un parametru. Orice alt parametru în plus înseamnă că funcția face mai mult decât îi spune numele, deci trebuie redenumită.

Unde faci cursul ăsta online?

Un mentor nu ar trebui să te scutească de întrebari pe forumuri? I.e. n-ar trebui să-ți explice lucrurile ce nu le înțelegi, mai ales dacă vorbim de lucruri de bază? Faptul că nu îți dă mentorul răspunsul dar ți-l dăm noi nu te ajută prea mult în procesul de învățare.

PS: codul pe forum nu se pune între ghilimele, se pune între trei backticks (```)

1 Like

Da, am inteles si mi-a explicat si mentorul.
Cursul il fac pe o platforma online care nu cred ca are vreo importanta.
Imi place programarea si tocmai din cauza asta intreb pe diverse forumuri ce si cum trebuie facut, pt ca vreau sa inteleg de ce.
Mentorul este ok si imi raspunde in general destul de promt dar chiar si asa vreau sa inteleg de ce si cum functioneaza asta fiind motivul sa vin si aici.
Sunt incepator si ca orice incepator sunt curios :slight_smile: presupun ca pentru multi de aici e joaca de copii… Pe mine ma doare capul deja…

1 Like

asta e tot ce am facut astazi

```

    var lat = prompt ("Introduceți un număr întreg pentru lungimea pătratului.");
   
    function calculAriaPatrat(lat,param1,param2) {
     
       param1 = 0;
       
       if (lat >= param1)
        {
       	return lat*lat
       }
       else if (lat < param1 ) {
       	alert("Introduceți un numar intreg fara valoare negativa.")
       	return "Invalida.Introduceți din nou"
       }
       
       else{alert("Introduceți doar cifre.")
                     return "Invalida.Introduceți din nou"}
               }

             


    document.writeln('Aria patratului este ' + calculAriaPatrat(lat));        
         
</script>
```

nu stiu cum as putea sa folosesc parametrii la aria patratului in context.
Mentorul mi a sugerat o metoda de folosire " param1 ar putea reprezenta precizia de zecimale cu care va fi afişat rezultatul, iar param2 va fi corespunzător numărului de poziţii cu care rezultatul va fi deplasat spre dreapta(fiind corespunzător numărului de caractere spaţiu ce vor fi adăugate înainte de valoarea calculată), sau lui param1 şi param2 li se pot asocia alte întrebuinţări."
Dar pur si simplu m-am blocat… am inebunit youtube ul si alte forumuri de profil si n-am gasit nicio solutie si sunt foarte curios de rezolvarea sa.
As aprecia f mult daca cineva mi-ar arata un model si sa inteleg de ce.

Ai putea să-i ignori

1 Like

Invata matematica si algoritmica inainte sa inveti un limbaj de programare. Daca nu ti-a spus asta “mentorul” inseamna ca vrea de la tine doar bani.

S-au facut 25 de raspunsuri :facepalm:

Prima data trebuie sa intelegi problema. Sa calculezi aria unui patrat cu o dimensiune a laturei data.

https://jsfiddle.net/Lzsjgwex/4

Am facut un simplu formular cu o casuta unde se introduce latura patratului cu un buton care apeleaza la apasare functia calculeazaArie().

In tag-ul <p id="rezultat"></p> se va afisa rezultatul.

<label>Introduceti dimesiunea laturii patratului </label><input type ="text" id="laturaPatrat"/><br/>
<button type="button" onclick="calculeazaArie()">Calculeaza arie</button>
<p id="rezultat"></p>

Mai jos am definit functia care se apeleaza. O functie se defineste folosind cuvantul cheie function. Functiile pot primi 0 sau n parametrii. In cazul nostru functia nu are parametrii.

Ceea ce este intre acolade reprezinta corpul functie. Acolo scrii ceea ce vrei sa faca functia. In cazul de fata:

  • Citeste valoarea pe care o scrii in casuta. getElementById("laturaPatrat").value extrage valoarea din acel camp. Observam ca primeste ca parametru id-ul elemetrului input type, id care se cheama laturaPatrat
  • Face o verificare daca adimensiunea este negativa, intrucat nu exista patrat cu dimensiunea < 0.
  • Mai folosesc inca o data getElementById, dar o apelez cu numele tag-ului unde doresc sa scriu rezultatul. In cazul nostru, elementul <p id="rezultat"></p>.
    Pt calcul, am nevoie sa ridic la patrat dimensiounea, asa ca folosesc pachetul Math unde am functia pow(baza, exponent). Baza este dimensiunea laturii patratului si exponentul este 2 (dimensiune^2). Alternativ pot folosi si dimensiune * dimensiune
<script>
function calculeazaArie() {

let dimensiune = document.getElementById("laturaPatrat").value //citim ceea ce am introdus in text box
    
if (dimensiune < 0)
    document.getElementById("rezultat").innerHTML = "Latura unui patrat nu poate fi negativa"
    
    document.getElementById("rezultat").innerHTML = Math.pow(dimensiune, 2); //ridica la patrat. sau dimensiune * dimensiune
}
</script>

Sper ca am explicat de cat de clar se poate.

Nota:
O alta verificare care ar trebui facuta este ca inputul sa fie numeric. Ce se intampla daca introduc o litera in campul pt dimensiune ?

2 Likes

Multumesc frumos pentru raspuns. Am inteles si inteleg destul de bine, ce nu am inteles a fost introducerea celor doi parametri si cum sa le dau un rol in functia de fata.

Salut! Cred ca acelasi curs fac si eu, cerintele fiind identice.
Ai reusit pana la urma ? Ti-a acceptat assingmentul ?
Daca da, ne scrii si noua te rog ?
Multumesc :-*

Numele mentorului vostru incepe cu “P” si se termina cu “etru”?

Ce se intampla daca introduc o litera in campul pentru dimensiune ?
Multumesc mult oameni buni.

Valoarea din campul dimensiune ajuge la Math.pow() si daca nu este numeric o sa iti dea NaN - Not-A-Number

1 Like

Multumesc, am inteles. Am cautat si o solutie
“else if (isNaN(x)) document.writeln(“Latura unui patrat trebuie sa fie un numar pozitiv”);”
Dar nu functioneaza. Care ar fi solutia ?
Multumesc.

Da-i direct cu Math.pow()
Math.pow(dimensiune, 2)

Salut. Multumesc pt raspuns.
Dar cerinta, pe care nu reusesc sa o indeplinesc este asa: “nu ar trebui să fie posibil ca pentru aceste laturi ale pătratului să se introducă valori negative, valori care nu sunt cifre, nici să rămână câmpuri goale.”
Aici nu ma descurc, am cautat pe mai multe site-uri.
Multumesc.

Prima data arunca un ochi peste structurile de control si incearca sa intelegi cum functioneaza.

Nu poti sa sari direct la “else if”, fara ca mai intai sa ai o conditie principala.

Salut,

var a = prompt("Introduceti dimesiunea laturii patratului ");
       var b;
       var c;
        function area(a, b, c) {
            return a*a; //functia de calcul (nu afiseaza date)
        } 
       if (a < 0) //structurile conditionale
        document.writeln("Latura unui patrat trebuie sa fie un numar pozitiv");
       else if (isNaN(a))
        document.writeln("Latura unui patrat trebuie sa fie un numar pozitiv");
       else
        document.writeln(area(a, b, c)); //val returnata ".        

Problema este ca: “Verificările asupra valorii lungimii laturii trebuie realizate în cadrul implementării funcției, și nu separat de implementarea acesteia. Daca verific întâi, dacă valoarea lungimii laturii este numerica, iar apoi pozitiva nu functioneaza.”

Merci.

1 Like

Pai nu ai nevoie ca functia sa aibe 3 parametrii avand in vedere ca un patrat are toate laturile egale

Pui acele if-uri in functia ta
Codul ar arata cam asa

var a = prompt("Introduceti dimesiunea laturii patratului ");

function area(a) {

    if (a < 0) //structurile conditionale
        document.writeln("Latura unui patrat trebuie sa fie un numar pozitiv");

    else if (isNaN(a))
        document.writeln("Latura unui patrat nu poate fi un string de caractere");

    else
        return a * a; //functia de calcul (nu afiseaza date)


}

document.writeln(area(a))

Salut multumesc de rapuns, dar asa scrie in cerinta: “o functie care primeste 3 parametri” (ma gandesc ca urmatorul assingment va fi ceva mai complicat care chiar are nevoie de 3 parametri)
Cum am scris mai sus: “Daca verific întâi, dacă valoarea lungimii laturii este numerica, iar apoi pozitiva nu functioneaza.””
Rezolvarea corecta ar fi:

if(isNaN(latValue) || (“” + lat).length != (“” + latValue).length)
return -1;

si dup’aia

if(lat < 0)
return -2;

Cu variabila în care va fi stocată valoarea lungimii laturii se va apela funcția, iar dacă funcția va returna valori, atunci se va utiliza o structură condițională pentru a afișa anumite mesaje în funcție de valorile returnate la apelul funcției.

Altfel spus:

if (x == -1) {
document.writeln(“Latura unui patrat trebuie sa fie un numar pozitiv”);
}
s.a.m.d.

Apreciez mult ajutorul.
Stati pe faza ca mai am unu’ imediat un pic mai greu :smiley:

Multumim frumos ca ne oferi acces gratuit la un curs care probabil valoreaza cateva mii de euro.
Asteptam exercitiul urmator sa ii dam de cap impreuna.