Loading...
Yordan.Vachev avatar Yordan.Vachev 2 Точки

Old Books

Ани отива до родния си град след много дълъг период извън страната. Прибирайки се вкъщи тя вижда
старата библиотека на баба си и си спомня за любимата си книга. Помогнете на Ани, като напишете програма
в която тя въвежда търсената от нея книга(текст) и капацитета на библиотеката(цяло число). Докато Ани не
намери любимата си книга или не провери всички в библиотеката, програмата трябва да чете всеки път на
нов ред името на всяка следваща книга (текст).
 Ако не открие книгата да се отпечата на два реда:
o "The book you search is not here!"
o "You checked {брой} books."
 Ако открие книгата си се отпечатва един ред:
o "You checked {брой} books and found it."
Примерен вход и изход
Вход Изход Обяснения
Troy
8
Stronger
Life Style
Troy

You checked 2 books and found it. Книгата която Ани търси, в случая е
Troy, а библиотеката съдържа 8
книги. Първата е Stronger, втората е
Life Style, третата книга е търсената –
Troy и програмата приключва.

The Spot
4
Hunger Games
Harry Potter
Torronto
Spotify

The book you search is not here!
You checked 4 books.

Книгата, която търси Ани е "The Spot".
Библиотеката съдържа 4 книги.
Първата е Hunger Games, втората
Harry Potter, третата Torronto, а
четвъртата Spotify. Понеже няма
повече книги в библиотеката
четенето на имена приключва. Ани не
намери книгата, която търсеше.

Bourne
32
True Story
Forever
More Space
The Girl
Spaceship
Strongest
Profit
Tripple
Stella
The Matrix
Bourne

You checked 10 books and found it.

 

 

 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{

    string favouriteBook;
    getline(cin, favouriteBook);

    int numberOfBooks;
    cin >> numberOfBooks;

    int counter = 0;
    bool bookIsFound = false;

    string nextBookName;
    cin >> nextBookName;

    while(counter < numberOfBooks){
        if(nextBookName == favouriteBook){
            bookIsFound = true;
            break;
        }else{
            counter ++;
            cin >> nextBookName;
        }
    }

    if(!bookIsFound){
        cout << "The book you search is not here!" << endl;
        cout << "You checked " << numberOfBooks << " books." << endl;
    }else{
        cout << "You checked " << counter << " books and found it." << endl;
    }

    return 0;
}

Малко помощ? Това, което се иска ми се изписва но judge реве :)

Тагове:
0
Programming Basics with C++
RuNNeR4142 avatar RuNNeR4142 396 Точки

Има проблем в judge системата на C++, точно ми показва компилатора,
а judge изкарва различни изходи на кода.
Ще докладвам лично.

0
04/07/2019 03:36:08
kolioi avatar kolioi 641 Точки

Две неща трябва да направиш:

1. Стрингове (в случая имената на книгите) винаги се четат с getline(). Иначе, ако четеш с cin, ще прочетеш само първата дума, защото спейса е стандартен разделител и cin спира четенето когато стигне до спейс (интервал).

2. Не бива да се смесват cin и getline(). Ако се налага обаче, след всяко четене с cin и преди следващо четене с getline() трябва да викаш cin.ignore(). Причината е, че въвъ входния буфер остава знака за край на ред \n и getline го прочита.

Иначе логиката ти е ОК, направи само тези промени и ще вземеш 100 точки.

П.П. Тези неща би трябвало да са ви ги казали на лекции/упражнения.

2
RuNNeR4142 avatar RuNNeR4142 396 Точки

Шефа на C++, благодаря за пояснението!

0
Yordan.Vachev avatar Yordan.Vachev 2 Точки

да проблема е в системата, но как да си кача решенията? Писах , но нямам отговор

0
RuNNeR4142 avatar RuNNeR4142 396 Точки

Както @kolioi обясни проблема не е в системата ами в четенето на данни така че прочети забележките горе. Този случай който ти дава грешка е специален за C++ и него не го минаваш успешно.

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