Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 22:42   #1
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию Виртуальные функции фунция срабатывает не правильно кто поможет найти ошибку

Код:
#include<iostream>
using namespace std;
class Person
{
protected:
	char name[40];
public:
	void GetName()
	{
		cout<<"Enter name"<<endl;
		cin>>name;
	}
	void PutName()
	{
		cout<<"Name is-"<<name<<endl;

	}
	virtual void GetData()=0;
	virtual bool IsOutstanding()=0;
};
class Student:public Person
{
private:
	float gpa;
public:
	void GetData()
	{
		Person::GetName();
		cout<<"Enter the average students ball"<<endl;   //введите средний бал ученика
		cin>>gpa;
	}
	bool IsOutstanding()
	{
		return(gpa>3.5)?true:false;
	}
};
class Professor:public Person
{
private:
	int num;
public:
	void GetData()
	{
		Person::GetName();
		cout<<"number of publications"<<endl;
		cin>>num;
	}
	bool IsOutstanding()
	{
		return(num>100)?true:false;
	}
};



void main()
{
	Person *persPTR[100];
	int n=0;
	char choice;
	
	do
	{
		cout<<"Enter Person Student -S, Enter Profesor P"<<endl;
		cin>>choice;
		if(choice=='S')
		{
			persPTR[n]=new Student;
			
		}
		else
		{
			persPTR[n]=new Professor;
			persPTR[n++]->GetData();

		}
		cout<<"Enter enother person-(y/n)"<<endl;
		cin>>choice;
	}
	while(choice=='y');
	{
		for(int j=0;j<n;j++)
		{
			persPTR[j]->PutName();
			if(persPTR[j]->IsOutstanding())
				cout<<"Cout its outstanding person"<<endl;
		}
	}

}
в программе при выборе студента функция GetData(); срабатывает как для профессора помогите разобратся в чом проблема
Progsenya вне форума Ответить с цитированием
Старый 24.08.2010, 01:22   #2
sergey.d
Пользователь
 
Регистрация: 23.08.2010
Сообщений: 98
Сообщение

Сделай проверку так:

Код:
if(choice == 'S' || choice == 's')
В таких случаях хорошо помогает контрольная печать типа такой:

Код:

cin>>choice;
cout << "User input:" << choice << endl;
if(choice == 'S' || choice == 's')
{
    cout << "Student" << endl;
    //...
}
else
{
    cout << "Professor" << endl;
    // ...    
}
sergey.d вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ работа с дерикториями кто поможет найти 2 ошибки буду благодарен Progsenya Общие вопросы C/C++ 2 22.08.2010 17:03
Не могу найти ошибку в програме может кто поможет... rik_nel Общие вопросы C/C++ 1 09.08.2010 18:15
Кто поможет найти ошибку в программе буду рад Progsenya Общие вопросы C/C++ 4 09.07.2010 00:28
Кто сможет разъяснить как и зачем использовать виртуальные функции в C++? Dunhil Помощь студентам 5 20.12.2007 14:19