[JS] Operators and Expressions Задача 4


2
4. Write an expression that checks for given integer if its third digit (right-to-left) is 7. E. g. 1732 -> true.
 
Срам, не срам... но нещо не мога да се оправя с тази задача. :D
В смисъл то е ясно, как се проверява самото число, но как например 789/100 да ми връща резултат 7, а не 7.89. Това не мога да схвана?



Отговори



1

Ами взимаш остатъка, който всъщност трябва да е 7:

примерно:

var r = 789/100

но така като гледам тук мисля, че трябваше да се раздели 1 път на 100 и после на 10, а не само един път на 100:

 

ето пример:
 
function thirdDigit() {
 
       var val = document.getElementById("digit").value;
       var fnum = (Math.floor(parseInt(val) / 100));
       var tnum = (fnum % 10);
 
       alert(tnum);
   }

от CaptCortez (1242 точки)


0
Използвай parseInt();

от Kristin (484 точки)


0

http://pastebin.com/6hLgM0Bx

Така трябва да изглежда задачата, като можеш да махнеш конзолата на Дончо и да използваш, parseInt(), вход от promt(), и изход от alert, и да казваш дали е вярно условието. Пример:

var number = prompt("Enter Number");

alert("number is odd :)");




0
А колега малко тъп въпрос, от къде да взема js-console.js и js-console.css май съм го пропуснал, та ако може да ми дадеш сорс ?

от CaptCortez (1242 точки)

0
от демата http://downloads.academy.telerik.com/svn/js-part1/Lectures/4.%20Conditional%20Statements/Conditional-Statements-demos.zip

от Mahata231 (1351 точки)



0

аз съм използвала Math.round и пак се получи. А всъщност,кое е по-правилно да се използва Math.round или parseInt();


от sveti9505 (25 точки)


0
Math.round закръгля, parseInt ти взема само цялата част. Трябва ти всъщност цялата част, не закръглената стойност, защото ако входа ти е 1799 Math.round(1799/100) = 18 и ще получиш грешен отговор. Лично аз направих задачата с Math.floor - взема само цялата част от числото.

от pirin (1101 точки)

0
аха,благодаря за разяснението :)

от sveti9505 (25 точки)



1

Подходих така:

1. разделих числото до получаване на третата цифра като остатък.

2. този остатък го присвоих на променлива и проверих нейната стойност, при условие че е абсолютно равна на 7 - изписва true

Ето и кода:

 

var Number = prompt("enter number", 0)
   for (var i = 0; i < 2; i++) {
       var Limit = Number / 10
       Number = Limit
   }
   var NumberSet = (parseInt(Limit) % 10)
   if (NumberSet===7) {
            jsConsole.writeLine(true)
   }
   if (NumberSet !== 7) {
       jsConsole.writeLine(false)
   }

от nada (0 точки)


0

от alexander (147 точки)


0
Аз се опитах да го направя в един общ израз, за да е максимално кратко и компактно. Ето го и решението:
var num = 1732; jsConsole.writeLine((parseInt( num / 100)) % 10 == 7);

от borisova (70 точки)


0

Колеги не знам какво става при мен, сигурно полудявам, но по който и от вариантите които сте показали да пробвам, просто изчисленията не излизат верни. Единственият вариант да покаже 'true' (thirdNumber is 7) е когато въведеното число е в следния формат (19789, ...etc.). Ако има повече от две цифри след 7-цата или логично ако 3-тото число не е 7 не изкарва (true). Използвам следния алгоритъм:

 

function checkThirdDigitOfNumber() {
            var input = jsConsole.readInteger("#textArea");
            var number = parseInt((input / 100) % 10);
            if (number == 7) {
                jsConsole.writeLine(true);
            } else {
                jsConsole.writeLine(false);
            }
        }
Моля ви дайте някакъв съвет защото изпуших вече:)

от stoil (20 точки)


0
колега, броим цифрите от дясно на ляво, кодът си работи нормално :)
188885545722 - true 788 - true 15555 - false 1275545000 - false

от pirin (1101 точки)


0
Вариант със стрингове:
var position = 3; var number = 1732; var searchDigit = 7; jsConsole.writeLine("The " + position + "th digit from right is " + searchDigit + ": " + ((number.toString()[(number.toString().length) - position]) == searchDigit));

от AntonPetrov (654 точки)


0
И аз съм използвал parseInt() за да разделя веднъж числото на 100 и после проверявам с true дали се дели на 10 с остатък 7,тогава съответно втората цифра е 7, ако ли не връща false. Но работи само с четирицифрено число.
http://codepen.io/kamenman/pen/fwBHc

от Kamen_Mitev (72 точки)