Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
#1

Наследование и полиморфизм - C++

07.04.2012, 17:32. Просмотров 675. Ответов 4
Метки нет (Все метки)

Добрый день ребятюни!!
Срочно требуется ваша помощь!
Программа которая служит для вывода выдающихся учеников и преподов.
Если у ученика средний бал больше 3,5 а у препода кол-во публикаций больше 100 то они выдающиеся...
Но пролема в том что программа изначально не работает!!!
Жду от вам поддержки!))
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "StdAfx.h"
#include <iostream>
using namespace std;
 
class person //базовый абстрактный класс персоны        
{
protected:
    char name[40]; //поле для создания имени
public: 
    void getName() //запросить ввод имени
    {cout <<"BBeduTe uMya: "; cin>>name;}  //запрос на ввод имени
    void putName()
    {cout <<"uMya: "<<name<<endl;}  //вывод имени
    virtual void getData() = 0;  //чистая виртуальная функция
    virtual bool isOutstanding() = 0; //чистая виртуальная функция
};
////////////////////////////////////////////////
class student : public person  //класс студент
{
private:
    float gpa; //скрытое поле для хранения баллов
public:
    void getData() //запросить данные об ученике
    {
    person::getName(); //
    cout<<"BBeduTe CpedHuu bal y4eHuka: "; cin>>gpa;  //запрос на ввод балла ученика
    }
    bool isOutstanding() //логическая ф-ция сравнения баллов
    {return (gpa>3.5) ? true : false;} //больше или меньше 3,5 баллов
};
/////////////////////////////////////////////////
class professor : public person //класс профессор
{
private: 
        int numPubs; //число публикаций
public:
    void getData() //запросить данные о педагоге
    {
        person::getName(); //функция ввода имени
        cout<<"BBeduTe kol-Bo publukacuu: "; cin>>numPubs; //запросить ввод публикаций
    }
    bool isOutstanding() //функция сравнения
    {return (numPubs>100) ? true : false; } //сравнение публикаций, сохранение значения
};
//////////////////////////////////////////////////
int main ()
{
    person* persPtr[100]; //массив персон 
    int n=0; //число людей внесенных в массив
    char choice;
    do{ //
        cout<<"Ychashiicya (s) ili pedagog (p)? "; //запрос учащийся или педагог?
        cin>>choice ; //ввод с/п
        if(choice=='s') //если ы
            persPtr[n]=new student; //ввод студента
        else //если п
            persPtr[n]=new professor; //ввод профессора
        persPtr[n++]->getData(); //запрос данных о персоне
        cout<<"BBecTu ewe persony? (yes/no): "; cin>>choice; //создать еще персону?
    } //
    while (choice=='y'); //пока ответ да, создаем персону
    int j;
    for (j=0; j<n; j++);//цикл для вывода имен из массива
    { 
        persPtr[j]->putName(); //вывести все имена массива
        if (persPtr[j]->isOutstanding()) //сообщаить о выдающихся
            cout<<"ETO BbIdayshuucya cheloBek! \n"; //
    } 
    return 0;  //
}
Все кончается после нажатия n...
Я просто не совсем догоняю. Это прога - пример из учебника. Не знаю почему, но уже не первый пример в учебнике не работает. Руки вырвать авторам...
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 17:32     Наследование и полиморфизм
Посмотрите здесь:

ООП Полиморфизм Наследование C++
C++ Классы / наследование / полиморфизм
Наследование и полиморфизм.Виртуальные функции C++
Наследование и полиморфизм. C++
C++ Наследование и полиморфизм...
C++ Наследование и полиморфизм классов
undefined reference (наследование и полиморфизм) C++
Полиморфизм и наследование - что это? C++
C++ Полиморфизм инкапсуляция и наследование(ООП)
Наследование, полиморфизм C++
C++ Наследование и полиморфизм

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
07.04.2012, 17:43     Наследование и полиморфизм #2
Цитата Сообщение от shev4ik Посмотреть сообщение
Все кончается после нажатия n...
Не понял, на что жалобы

АА вижу на что. Но у меня по какой то причине заходит в цикл при n=2 j=2
хотя j всегда должен быть меньше n


Цитата Сообщение от shev4ik Посмотреть сообщение
Руки вырвать авторам...
Огласите, пожалуйста каким. И что за учебник интересно.
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
07.04.2012, 17:49  [ТС]     Наследование и полиморфизм #3
Р. Лафоре "Объектно-ориентированное программирование в С++" 4 издание
Мысли по исправлению ошибки имеются?))
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
07.04.2012, 17:54     Наследование и полиморфизм #4
Цитата Сообщение от shev4ik Посмотреть сообщение
for (j=0; j<n; j++);
ААААА
Точка с запятой!!! после for- значит цикл пустой
Ты понял, что произошло????

Он прокручивает вместо вывода массива пустой цикл
Когда счётчик выходит за максимум цикл останавливается
И он пытается сделать вывод, но так как j указывает на один шаг дальше размера массива, то всё рушится из-за неудачной попытки вывести на экран невыделенный кусок памяти!

Это скорее всего твоя ошибка, не автора
shev4ik
0 / 0 / 0
Регистрация: 28.10.2009
Сообщений: 19
07.04.2012, 18:03  [ТС]     Наследование и полиморфизм #5
Чувак ты гений!! Спасибо огромное!!)))
Я не заметил) Хотя и видел что ошибка была в цикле вывода, но вот не внимательно смотрел!))
Спасибо))
Тупорылые авторы, в этой программе куча ошибок, мне пришлось не зная материала, их ошибки исправлять)) Что мог сам исправил, а вот тут не заметил)
Надо еще как то виртуальную функцию приделать в студента или профессора, ток какую и зачем?
Это препод задал... Буду думать)))
Yandex
Объявления
07.04.2012, 18:03     Наследование и полиморфизм
Ответ Создать тему
Опции темы

Текущее время: 14:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru