HackerRank: - День 4: Класс против экземпляра, какая-то странная ошибка по какой-то причине - PullRequest
0 голосов
/ 03 марта 2020

Получение ошибки для этого теста: - https://www.hackerrank.com/challenges/30-class-vs-instance/problem?h_r=next-challenge&h_v=zen По какой-то причине один тестовый случай не удался, когда я запустил его в своей IDE, он выдал тот же результат, что и ожидалось, помогите мне узнать, что я пропустил Я очень начинающий программист, переходя от истории Civil Engg, поэтому я извиняюсь, если ошибка действительно глупа. Мой код:

#include <iostream>
using namespace std;

class Person{
    public:
        int age;
        Person(int initialAge);
        void amIOld();
        void yearPasses();
    };

    Person::Person(int initialAge){
        if (initialAge < 0){
            this->age=0;
            cout << "Age is not valid, setting age to 0.";
        }
        else {
            this->age = initialAge;
        }

    }

    void Person::amIOld(){
        if(age < 13){
            cout << "\nYou are young.";
        }
        else if (age >= 13 && age < 18) {
            cout << "\nYou are a teenager.";
        }
        else {
            cout << "\nYou are old.";
        }
    }

    void Person::yearPasses(){
        age++;
    }

int main(){
    int t;
    int age;
    cin >> t;
    for(int i=0; i < t; i++) {
        cin >> age;
        Person p(age);
        p.amIOld();
        for(int j=0; j < 3; j++) {
            p.yearPasses(); 
        }
        p.amIOld();

        cout << '\n';
    }

    return 0;
}

1 Ответ

1 голос
/ 03 марта 2020

Это новый конец строки, который вы ставите в начале, а не в конце,

cout << "\nYou are old.";

Поместите их в конец, чтобы исправить это. Эти тесты проверяют точный вывод, много раз ответ кажется правильным, но небольшие различия в результатах не пройдут тестовый случай.

Объяснение причины неудачи: поставив конец строки в начале, вы получите при условии, что уже есть выход / строка. Так что в случаях, когда начальный возраст не <0, у вас нет выходных данных / строки для начала. Таким образом, вы получите вывод на следующей строке вместо того, где он должен быть. </p>

...