Софтуерно Инженерство
Loading...
+ Нов въпрос
DobrinMarkov avatar DobrinMarkov 0 Точки

JS PB Nested loops

Еднакви суми на леви и десни позиции
Напишете програма, която чете от конзолата две петцифрени цели числа в диапазона от 10000 до 99999.
Първото число винаги ще бъде по-малко от второто. Да се намерят и отпечатат на конзолата, разделени с
интервал, онези числа, които се намират между прочетените от конзолата числа и отговарят на следните
условия:
 сумите от двете най-десни и двете най-леви цифри на проверяваното число да са равни
 ако сумите са различни към по-малката от тях се прибавя средната цифра, на проверяваното число и
получената нова сума се сравнява с другата сума. Ако те са равни числото се отпечатва.
Ако няма числа, отговарящи на условията на конзолата не се извежда резултат.
Примерен вход и изход
Вход
10000
10100

Изход

10001 10010 10100

Обяснения

Първото генерирано число за проверка е 10000. Разделяме числото на 3
групи - двете най- десни цифри, двете най- леви и средната. Сумата на двете
най- десни цифри е 0+0=0, а тази на двете най- -леви 0+1=1. Тъй като сумата
на десните цифри е по-малка от сумата на левите към нея прибавяме
средната цифра 0+0=0. Получаваме 0. Сравняваме новополучената сума със
сумата на левите цифри. Те не са равни, числото не отговаря на условието и
не се отпечатва.
Следващото число за проверка е 10001. Сумата на десните цифри е 1+0=1, а
на левите 0+1=1. Двете суми са равни и не е нужно да извършваме някакви
действия със средната цифра. Числото се отпечатва на конзолата.
Следващото число е 10002. Не отговаря на условията и не се отпечатва.
Последното число за проверка е 10100. Сумата на десните цифри е 0+0=0, на
левите 0+1=1. Дясната сума е по-малка и затова към нея прибавяме средната
цифра 0+1=1. Новополучената сума сравняваме със сумата на левите цифри.
Двете суми са равни, числото отговаря на условията и се отпечатва.

Това е условието на задачата, а това е моето решение - https://pastebin.com/PY8FJB0X, за което получавам 40/100.

Съдейки по резултата ми проблемът е с тази част на условието " ако сумите са различни към по-малката от тях се прибавя средната цифра, на проверяваното число и получената нова сума се сравнява с другата сума. Ако те са равни числото се отпечатва." 

Някой да вижда какъв е проблема?

Тагове:
Tspetrova avatar Tspetrova 54 Точки

Здравейте, линка с решението ти не се отваря...това е моето решение на Java, дано ти помогне да се ориентираш :-)

https://pastebin.com/5zQJ1xjf

0
DobrinMarkov avatar DobrinMarkov 0 Точки

Здравей, решението ми е абсолютно същото като твоето. С единствената разлика, че аз използвам Мат.абс. Благодаря ти!

Качвам отново решението - https://pastebin.com/NquF372C.

0
willystyle avatar willystyle 354 Точки

Замени

let newNumb = numb.charCodeAt(j);

с

let newNumb = +numb[j];

PS Добре е да провериш какво дава функцията charCodeAt, връща UTF кода на символа на съответната позиция, а на теб ти трябва символа на съответната позиция, който да парснеш.

Други варианти на решение:

let newNumb = +numb.chatAt(j);

let newNumb = Number(numb[j]);

let newNumb = parseInt(numb[j]);

0
20/02/2019 19:02:44
DobrinMarkov avatar DobrinMarkov 0 Точки

Благодаря за помощта и на двата ми въпроса. Много полезен отговор :)

0