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

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

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

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

07.04.2012, 17:32. Просмотров 704. Ответов 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...
Я просто не совсем догоняю. Это прога - пример из учебника. Не знаю почему, но уже не первый пример в учебнике не работает. Руки вырвать авторам...
Заранее спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Наследование и полиморфизм (C++):

Наследование и полиморфизм. - C++
Вопрос следующий. Как мне вытащить функцию из родителя класса родителя, при условии что родителей тек. класса у меня 2! )) Запутанно? Ниже...

Наследование и полиморфизм - C++
Написать демонстрационную программу, в которой создаются объекты различных классов. Определение классов, их реализацию, демонстрационную...

Наследование, полиморфизм - C++
Не могу реализовать полиморфизм для метода getShow() ну и в теории сетШов(). Но сейчас о гете говорим. Я создал дополнительный класс...

Наследование и полиморфизм... - C++
Есть спецы в этой теме?) Сейчас пишу курсовую, в методичке (препод сильно снижает за отклонения от инструкций) сказано создать базовый...

Полиморфизм, наследование - C++
Создать абстрактный базовый класс с виртуальной функцией*— площадь. Создать производные классы: прямоугольник, круг, прямоугольный...

Полиморфизм, наследование - C++
Товарищи, кто может, объясните пожалуйста. Просят добавить новый тип объектов Trap. Методы в нем объявлены как виртуальные, но в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
07.04.2012, 17:43 #2
Цитата Сообщение от shev4ik Посмотреть сообщение
Все кончается после нажатия n...
Не понял, на что жалобы

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


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

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

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

Классы / наследование / полиморфизм - C++
Решите, если несложно, программа вроде довольно простая..., но с с++, я пока неочень... Добавлено через 36 минут вот что я...

Наследование и полиморфизм классов - C++
Доброго времени суток. Суть задания определить иерархию классов; Классы - тест, экзамен, выпускной экзамен, испытание; я так...

ООП Полиморфизм Наследование - C++
У меня есть базовый класс и 2 производных от него класса... Как сделать, чтобы в программе я мог сделать такое обьявление: Force fc;...

Наследование и полиморфизм.Виртуальные функции - C++
Помогите пожалуйста программу написать. Я новичок и еще не во всем разобрался!!! Задание: Заданы названия базовых и производных...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.04.2012, 18:03
Ответ Создать тему
Опции темы

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