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

1. Old books - JS

https://pastebin.com/3VqtXgyc

Не получавам желания отговор. Цикъла ми отчита, че съм минала само през една книга докато стигна до любимата книга,а всъщност минавам през две, но не ми ги отпечатва.

 

Тагове:
0
Programming Basics
PetarIliev1 avatar PetarIliev1 75 Точки

https://pastebin.com/hnyT2HsW  - Твоето решение поправено.

Проблема беше на 18-ти ред където ако минеш if проверката (дефакто не е намерила книгата) четеш пак книга която не се проверява защото на 11-ти ред четеш следващата.

Така това което става при вход :

The Spot
4
Hunger Games
Harry Potter
Torronto
Spotify

Взимаш първо Hunger Games == The Spot  - Не, но преди да се е върнало към while loop-a взимаш :

  • counter++;

        nextBook = input.shift();

 

само , че никъде не го проверяш и губиш цяла книга защото отива на 11-ти ред и вместо да провери Harry Potter == The Spot  то проверява Torronto == The Spot ---   let nextBook = input.shift();

Надявам се да съм си бил полезен.

 

0
B.Baleva avatar B.Baleva 5 Точки

Преди while цикъла не трябва ли next book да се въведе като променлива ? NextBook се слага веднага след while цикъла, за да може да преминава на всяка следваща, нали ? А когато е на 18 ред прехвърлянето на книгите не стига до този ред ? Ако правилно съм те разбрала.

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

0
PetarIliev1 avatar PetarIliev1 75 Точки

nextBook може да е във цикъла или извън него, аз просто съм го изнесъл извън него.

 let nextBook = input.shift();

или

  •  let nextBook;

 

    while (counter < numBook) {

         nextBook = input.shift();

Няма значение и двете правят едно и също

-----------------

На 18-ти ред има прехвърляне на книга в твоят код (        nextBook = input.shift();     )

Само че след него няма проверка - >

  • if (nextBook == favouriteBook) {

            isBookFound = true;

            console.log(`You checked ${counter} books and found it.`)

            break;

        }

и това което става е че се връща на 11-ти ред ---- > let nextBook = input.shift();

и реално пропъска цяла книга.

Едниственото нещо което трябва да промениш в твоят код е да изтриеш 18-ти ред

0
B.Baleva avatar B.Baleva 5 Точки

Разбрах ! Много благодаря : )

0