Loading...
anatoliy_87 avatar anatoliy_87 2 Точки

Exercises: Data Types and Variables / 08. Calculator

Здравейте,

Двата теста от условието на задачата работят, но judge ми дава 45/100. Някой може ли да ми каже, какво бъркам?

Ето и линк към условието на задача 8* Calculator:

https://judge.softuni.bg/Contests/Compete/Index/1229#0

Това е кода:

https://pastebin.com/MH5aGLCw

Благодаря предварително!

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки

Здравей, калкулатора освен да събира и изважда, се предполага, че също поне може да дели и умножава :)

function calculator(firstNumber, simbolChar, secondNumber) { 
    if (simbolChar === '+') {
        console.log((firstNumber + secondNumber).toFixed(2));
    } else if (simbolChar === '-') {
        console.log((firstNumber - secondNumber).toFixed(2)); 
    } else if (simbolChar === '*') {
        console.log((firstNumber * secondNumber).toFixed(2)); 
    } else if (simbolChar === '/') {
        console.log((firstNumber / secondNumber).toFixed(2)); 
    }
}

Меджу другото, условието на задачата подтиква към използване на switch с цел прегледност на кода:

function calculator(firstNumber, simbolChar, secondNumber) {
	let result;
	switch (simbolChar) {
		case '+':
			result = firstNumber + secondNumber;
			break;
		case '-':
			result = firstNumber - secondNumber;
			break;
		case '*':
			result = firstNumber * secondNumber;
			break;
		case '/':
			result = firstNumber / secondNumber;
			break;
	}
	console.log(result.toFixed(2));    
}

И накрая, ще ти предложа едно много кратко решение, което използва eval(), като е добре да прочетеш, защо никога не трябва да го използваш, особено с вход подаден от другаде:

function calculator(firstNumber, simbolChar, secondNumber) {    
    console.log(eval(firstNumber + simbolChar + secondNumber).toFixed(2));    
}

 

0
anatoliy_87 avatar anatoliy_87 2 Точки

Много благодаря за изчерпателният отговор! :)

1
Iskren.1990 avatar Iskren.1990 6 Точки

   Здравей, прочетох малко. Но не ми е ясно защо не е добре да се използва.

Прави ми впечатление как всеки казва нещо от рода на "Много е яко, но никога не го използвай" :D

Вместо нов коментар редактирам. Попрочетох още малко:

Do not ever use eval!

eval() is a dangerous function, which executes the code it's passed with the privileges of the caller. If you run eval() with a string that could be affected by a malicious party, you may end up running malicious code on the user's machine with the permissions of your webpage / extension. More importantly, a third-party code can see the scope in which eval() was invoked, which can lead to possible attacks in ways to which the similar Function is not susceptible.

1
04/10/2019 23:12:32
willystyle avatar willystyle 2472 Точки

Да, ориентирал си се. И аз може би неправилно съм се изразил "никога" да не се ползва. Ползва се, но от отпитни програмисти, който знаят какво правят. Например, под шапката на Webpack, може да го забележиш, той създава бъндел от обединени темплейти html, js и css, като всичко може да е напъхано в един .js файл, и например css e зареден от компонентите, сложен е в <style> таг и чрез eval(document.append...) го подпъхват.

0
knoteva avatar knoteva 1081 Точки

Здравей,

Май са изпуснали да напишат, че може да има умножение и деление("*" и "/").

0
02/10/2019 10:13:31
anatoliy_87 avatar anatoliy_87 2 Точки

Да, или просто е трябвало сам да се сетя. Благодаря!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.