При вызове метода ничего не происходит.С++

178
23 марта 2019, 04:20
    #include <iostream>
#include <stdio.h>

using namespace std;
#define  N 5
class Man {
    string name;
    int age;
    string city;
public:
    virtual void about() {
        printf("Hi, my name's %s.I'm %i.I live in %s.", name.c_str(), age, city.c_str());
    }
    virtual void fiiling() {
        cout << "Enter your name: ";
        cin >> name;
        cout << "Enter your age: ";
        cin >> age;
        cout << "Enter  city of residence:";
        cin >> city;
    }

};
class Student : public Man {
protected:
    char status;
    char statusStudy;
    char statusAvarang;
    string university;  // университет
    string faculty; // факультет
    string group;   // Группа
    int course;    //курс
    float evaluation[N];
    float avarangPoint;
    bool isStudy;

public:
    void about() override {
        Man::about();
        printf("I study in %s.faculty %s,group %s, course %s.", university.c_str(), faculty.c_str(), group.c_str(),
               course);
    }
    void fiiling() override {
        Man::fiiling();
        cout << "Enter your university: ";
        cin >> university;
        cout << "Enter faculty: ";
        cin >> faculty;
        cout << "Enter group:";
        cin >> group;
        cout << "Enter course: ";
        cin >> course;
        cout << "Do you study now? Y/N ";
        cin >> statusStudy;
        if (statusStudy == 'Y' || statusStudy == 'y') {
            isStudy = true;
        } else isStudy = false;
        cout << "Want to specify your ratings? Y/N ";
        cin >> status;
        if (status == 'Y' || status == 'y') {
            fiillPoint();
        }
    }
    void fiillPoint() {  // заполнение оценок
        for (int i = 0; i <= N; i++) {
            cout << "Enter your point in subject " << i + 1 << endl;
            cin >> evaluation[i];
        }
        cout << " Want to know the average ball? Y/N ";
        cin >> statusAvarang;
        if (statusStudy == 'Y' || statusStudy == 'y') {
            avarangPoint = gradePointAverage();
            cout << "Your avarenge point: " << avarangPoint << endl;
        } else cout << "GoodBye " << endl;;
    }
    float gradePointAverage() {      // средний  балл
        float temp = 0;
        for (int i = 0; i < N; ++i) {
            temp += evaluation[i];
        }
        return temp / N;
    }
    void state() {
        if (isStudy) { cout << "I am study now " << endl; }
        else { cout << "I'm don't study now :D" << endl; }
    }
};
class Sportsman : public Student {
    char status;
protected:
    string kindOfSport;
    int yearsOfSports;
public:
    void about() override {
        Student::about();
        printf("In my free time I play %s.I've been doing it for %i years already", kindOfSport.c_str(), yearsOfSports);
    }
    void fiiling() override {
        Student::fiiling();
        cout << "What sports do you do ? ";
        cin >> kindOfSport;
        cout << "How many years have you been doing it? ";
        cin >> yearsOfSports;
        cout << "do you want to train? Y/N";
        cin >> status;
        if (status == 'Y' || status == 'y') {
            training();
        } else { cout << "GoodBye " << endl; }

    }

    void training() {   // тренировка
        cout << "going to the gym......" << endl;
        cout << "I train..." << endl;
    }

};
int main() {
//
//    cout << "=======================Student================"<<endl;
//    Student student;
//    student.fiiling();
//    student.about();
    cout << endl << "=======================Sportsman================" << endl;
    Sportsman sportsman;
    sportsman.fiiling();
    sportsman.about();`введите сюда код`
    cin.get();
    cin.get();
    return 0;
}

При вызове метода about(); на любом обьекте ничего не происходит только завершаеться программа. Хотя метод fiiling(); работает корректно. В чём беда ?

Answer 1

Во-первых, ваша мешанина из функций ввода-вывода их разных стандартных библиотек - С и С++ - вызывает недоумение.

Во-вторых, чтобы на построчно-буферизованных устройствах начало что-то "происходить", необходимо после ваших данных хотя бы вывести символ перевода строки.

READ ALSO
Разложить число на множители

Разложить число на множители

Дано натуральное число nПолучить его каноническое разложение (разложение на простые множители)

144
Изменение размеров виджетов

Изменение размеров виджетов

Как изменить размеры виджетов которые находятся в слое(layout), получается изменить размеры кнопок через qss(пока я что попробовал), но размеры...

138
Прекращена работа программы. Как вы ее исправили-бы

Прекращена работа программы. Как вы ее исправили-бы

Всем привет, начал разработку игры, еще мало чего создал, но после добавления отклика на столкновение почти сразу после запуска exe виндовс...

156
C++ FillArray вызвано исключение [закрыт]

C++ FillArray вызвано исключение [закрыт]

я новенький в изучении C++Что в этом коде может быть не так?

142