Консультация № 178409
15.05.2010, 15:01
43.38 руб.
0 1 0
Здравствуйте!
Помогите написать программу на С++ в консольном приложении

Перечень классов: тест,экзамен,выпускной экзамен,испытание
1) определить в классе статическую переменую - указатель на начало связанного списка объектов и статическую функцию для просмотра списка.
2)Реализовать классы
3)написать демонстрационную программу,в которой создаются объекты различных классов и помещаются в список, после чего список просматривается
4)Сделать соответствующие методы не виртуальными и посмотреть что будет
5) Реализовать вариант,когда объект добавляется в список присоздании,т.е. в конструкторе

Подробное описание:
1)для определения иерархии классов связать отношением наследования классы тест,экзамен,выпускной экзамен,испытание
Абстрактный класс - тест
2)Определить в классах все необходимые конструкторы и деструкторы
3) Компонентные данные класса специфицировать как protected
4)Пример определения статических компонентов:
static test* begin;//указатель на начало списка
static void print(void)//просмотр списка
5)Статистическую компоненту -данное инициализировать вне определения класса,а в глобальной области
6)Для добавления объекта в список предусмотреть метод класса,т.е. объект сам добавляет себя в список .Например Add() - объект добавляется в список
7)Список просматривать путем вызова виртуального метода show каждого объекта
8) Статистический метод просмотра списка вызывать через класс,а не через объект
9)Определение классов,их реализацию,демонстрационную программу поместить в отдельные файлы

Описание членов-данных пользовательского класса
name//имя
data//дата
result//результат

Приложение:
#include <vcl.h>
#include <stdio.h>

#define EKZAMEN "Ekzamen"
#define VIPUSKEKZAMEN "VipuskEkzamen"
#define ISPITANIE "ispitanie"


#include <iostream.h>
#include <stdlib.h>

static int count=0;

class test
{
public:
char *name1;
int data1;
int result1;
static test *beg;
test* next;

test();
test(char *name,int data,int result);
test(const test&);
~test(){};
static void showlist();
void addtolist();
char* getname();
virtual int getdata()=0;
int getresult() const;
void setname(char*);
virtual void setdata(int);
void setresult(int);
virtual void setall(char*,int,int);
void show();
};

class ekzamen:public test
{
public:
ekzamen(){name1="ekzamen";};
ekzamen(char* name, int result){
name1=name;
data1=5;
result1=result;
};
ekzamen(const ekzamen&);
~ekzamen(){};
int getdata();
void setdata();
void setall(char*,int);
};

class vipuskekzamen:public test
{
public:
vipuskekzamen(){name1="vipuskekzamen";};
vipuskekzamen(char* name, int result){
name1=name;
data1=4;
result1=result;
};
vipuskekzamen(const vipuskekzamen&);
~vipuskekzamen(){};
int getdata();
void setdata();
void setall(char*,int);
};

class ispitanie:public test
{
public:
ispitanie(){name1="ispitanie";};
isp(char* name, int result){
name1=name;
data1=6;
result1=result;
};
ispitanie(const ispitanie&);
~ispitanie(){};
int getdata();
void setdata();
void setall(char*,int);
};

extern test *p;
extern ekzamen *p2;
extern vipuskekzamen *p3;
extern ispitanie *p4;




test::test()
{
name1="\0";
data1=0;
result1=0;
addtolist();
};
test::test(char *name,int data,int result)
{
name1=name;
data1=data;
result1=result;
addtolist();
};
test::test(const test& sec)
{
name1=sec.name1;
data1=sec.data1;
result1=sec.result1;
};

void test::showlist()
{
char i;
test *tmp=test::beg;
printf("count=%d\n",count);
for(i=0;i<count;i++)
{
tmp->show();
tmp=tmp->next;
}
};

void test::addtolist()
{
this->next=beg;
beg=this;
count++;
};

char* test::getname()
{
return name1;
}

int test::getdata()
{
return data1;
}

int test::getresult() const
{
return result1;
}

void test::setname(char* nm)
{
name1=nm;
}

void test::setdata(int dat)
{
data1=dat;
}

void test::setresult(int res)
{
result1=res;
}

void test::setall(char* nm, int dat, int res)
{
name1=nm;
data1=dat;
result1=res;
}

void test::show()
{
printf("Name: %s ; data: %s ; result: %d\n",name1,data1,result1);
}

char* ekzamen::getdata()
{
return ekzamen;
}

void ekzamen::setdata()
{
data1=ekzamen;
}

void ekzamen::setall(char* nm,int res)
{
name1=nm;
data1=ekzamen;
result11=res;
}

char* vipuskekzamen::getdata()
{
return vekzamens;
}

void vipuskekzamens::setdata()
{
data1=vekzamens;
}

void vipuskekzamens::setall(char* nm,int res)
{
name1=nm;
data1=vekzamens;
tesult1=res;
}

char* ispitanie::getdata()
{
return isp;
}

void ispitanie::setdata()
{
data1=vekzamens;
}

void ispitanie::setall(char* nm,int res)
{
name1=nm;
data1=vekzamens;
result1=res;
}
test * test::beg=0;

int main(int argc, char** argv)
{
ekzamens lol("people1",4);
vipuskekzamens pigs[2]={vekzamen("people2",5),vekzamen("People3",4)};
vekzamen *opo;
opo=new vekzamen;
opo->setall("Opossum",7);
ANIMAL::showlist();
printf("========================================================= \n");
printf("construct bez parametrov: \n");
printf("name1: \n");
printf("data1: \n");
printf("result1: \n");
/*При добавлении методом .add получается, что next 2 объектов
указывают друг на друга. Чтоб такого не было - нужно убрать из
конструкторов автодобавление. */
system("pause");
}

Обсуждение

Неизвестный
18.05.2010, 13:11
общий
очень нужна мне эта программа. Помогите пожалуйста хоть кто-нибудь написать ее.
Форма ответа