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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 18:34   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Плохо Нужно вывести результат класса

Здравсвуйте программисты! Столкнулся с проблеммой вывода результата классов. Проблемма заключается в том,что не знаю,как вывести результат 2 производных классов OneRoom и ThreeRoom, получилось,только вывести результат класса Room. Программа написанна на С++ Билдер 6. Вот исходник:

Код:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
using namespace std;

class Room
{
protected:
double square;     //Площадь
int count_room;   //Количество комнат
int floor;       //Этаж


public:
Room(): square(0), count_room(0), floor(0) {}
Room(double sqr, int count, int flr): square(sqr), count_room(count), floor(flr) {}
~Room() {}

void SetRoomCount(int count) { count_room = count; }
void SetRoomSquare(double sqr) { square = sqr; }
void SetRoomFloor(int flr) { floor = flr; }

int GetRoomCount()const { return count_room; }
double GetRoomSquare()const { return square; }
int GetRoomFloor()const { return floor; }
};

class OneRoom: public Room
{
private:
double square_kitchen; //Площадь кухни

public:
OneRoom(): square_kitchen(0) { Room(); count_room = 1; }
OneRoom(double sqr, int flr, double sqr_kitchen) { Room(sqr, 1, flr); square_kitchen = sqr_kitchen; }

void SetRoomCount()const {}
void SetKitchenSquare(double sqr) { square_kitchen = sqr;  }
double GetKitchenSquare()const { return square_kitchen; }
};

/*создается класс ThreeRoom, унаследованный от OneRoom
далее в конструкторе класса ThreeRoom вызывается конструктор
 класса OneRoom и переменной count_room присваивается значение 3
далее в кострукторе класса ThreeRoom с 3 параметрами вызывается
конструктор класса OneRoom с 3 параметрами    */

class ThreeRoom: public OneRoom
{
public:
ThreeRoom() { OneRoom(); count_room = 3; }
ThreeRoom(double sqr, int flr, double sqr_kitchen) { OneRoom(sqr, flr, sqr_kitchen); }
};


main()
{
Room      A(300, 4, 13);
OneRoom   AA(45,1,19);
ThreeRoom AAA(95,3,8);
 char str1[150],str2[50],str3[50];
 char st1[50],st2[50],st3[50], etash[50], s1[50];
 char rez1[50], rez2[50],rez3[50];
 char m[150], n[150];

////////////////////////////////////////////////////////////
 CharToOem("Резульат базового класса Room", rez1);
 CharToOem("Резульат производного класса OneRoom", rez2);
 CharToOem("Резульат производного класса ThreeRoom", rez3);
 CharToOem("--------------------------------------------------------------|",n);
 CharToOem(" квадратн.м.",m);
 CharToOem("Этаж № ",etash);
 /////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////
 CharToOem("Площадь базового класса Room = ",str1);
 CharToOem("Площадь кухни производного класса OneRoom = ",str2);
 CharToOem("Площадь производного класса ThreeRoom = ",str3);
/////////////////////////////////////////////////////////
 CharToOem("Количество комнат класса Room = ",st1);
 CharToOem("Количество комнат производного класса OneRoom = ",st2);
 CharToOem("Количество комнат производного класса ThreeRoom = ",st3);
///////////////////////////////////////////////////////////////////


////// Class Room //////////
 cout<<rez1<<endl<<n<<endl;  //Вывод строки результата по Room
 cout<<str1<<A.GetRoomSquare()<<m<<endl;  //Площадь Room
 cout<<st1<<A.GetRoomCount()<<endl;      //Количество комнат Room
 cout<<etash<<A.GetRoomFloor()<<endl;   //Этаж

getch();
}
prikolist вне форума Ответить с цитированием
Старый 21.05.2009, 18:51   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <iostream.h>
#include <conio.h>
#include <windows.h>
using namespace std;

class Room
{
protected:
double square;     //Площадь
int count_room;   //Количество комнат
int floor;       //Этаж


public:
Room(): square(0), count_room(0), floor(0) {}
Room(double sqr, int count, int flr): square(sqr), count_room(count), floor(flr) {}
~Room() {}

void SetRoomCount(int count) { count_room = count; }
void SetRoomSquare(double sqr) { square = sqr; }
void SetRoomFloor(int flr) { floor = flr; }

int GetRoomCount()const { return count_room; }
double GetRoomSquare()const { return square; }
int GetRoomFloor()const { return floor; }
};

class OneRoom: public Room
{
private:
double square_kitchen; //Площадь кухни

public:
OneRoom(): Room(),square_kitchen(0) {  count_room = 1; }
OneRoom(double sqr, int flr, double sqr_kitchen) : Room(sqr, 1, flr) { square_kitchen = sqr_kitchen; count_room=1;}

void SetRoomCount()const {}
void SetKitchenSquare(double sqr) { square_kitchen = sqr;  }
double GetKitchenSquare()const { return square_kitchen; }
};

/*создается класс ThreeRoom, унаследованный от OneRoom
далее в конструкторе класса ThreeRoom вызывается конструктор
 класса OneRoom и переменной count_room присваивается значение 3
далее в кострукторе класса ThreeRoom с 3 параметрами вызывается
конструктор класса OneRoom с 3 параметрами    */

class ThreeRoom: public OneRoom
{
public:
ThreeRoom() : OneRoom() { count_room = 3; }
ThreeRoom(double sqr, int flr, double sqr_kitchen) : OneRoom(sqr, flr, sqr_kitchen){ count_room=3;}
};


main()
{
Room      A(300, 4, 13);
OneRoom   AA(45,1,19);
ThreeRoom AAA(95,3,8);
 char str1[150],str2[50],str3[50];
 char st1[50],st2[50],st3[50], etash[50], s1[50];
 char rez1[50], rez2[50],rez3[50];
 char m[150], n[150];

////////////////////////////////////////////////////////////
 CharToOem("Резульат базового класса Room", rez1);
 CharToOem("Резульат производного класса OneRoom", rez2);
 CharToOem("Резульат производного класса ThreeRoom", rez3);
 CharToOem("--------------------------------------------------------------|",n);
 CharToOem(" квадратн.м.",m);
 CharToOem("Этаж № ",etash);
 /////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////
 CharToOem("Площадь базового класса Room = ",str1);
 CharToOem("Площадь кухни производного класса OneRoom = ",str2);
 CharToOem("Площадь производного класса ThreeRoom = ",str3);
/////////////////////////////////////////////////////////
 CharToOem("Количество комнат класса Room = ",st1);
 CharToOem("Количество комнат производного класса OneRoom = ",st2);
 CharToOem("Количество комнат производного класса ThreeRoom = ",st3);
///////////////////////////////////////////////////////////////////


////// Class Room //////////
 cout<<rez1<<endl<<n<<endl;  //Вывод строки результата по Room
 cout<<str1<<A.GetRoomSquare()<<m<<endl;  //Площадь Room
 cout<<st1<<A.GetRoomCount()<<endl;      //Количество комнат Room
 cout<<etash<<A.GetRoomFloor()<<endl;   //Этаж

cout<<endl;
 ////// Class OneRoom //////////
 cout<<rez2<<endl<<n<<endl;  //Вывод строки результата по Room
 cout<<str2<<AA.GetRoomSquare()<<m<<endl;  //Площадь Room
 cout<<st2<<AA.GetRoomCount()<<endl;      //Количество комнат Room
 cout<<etash<<AA.GetRoomFloor()<<endl;   //Этаж
 
cout<<endl;
 ////// Class ThreeRoom //////////
 cout<<rez3<<endl<<n<<endl;  //Вывод строки результата по Room
 cout<<str3<<AAA.GetRoomSquare()<<m<<endl;  //Площадь Room
 cout<<st3<<AAA.GetRoomCount()<<endl;      //Количество комнат Room
 cout<<etash<<AAA.GetRoomFloor()<<endl;   //Этаж 

getch();
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.05.2009, 19:15   #3
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Спасибо большое!!!!!!!!!!!!!!!!!!
prikolist вне форума Ответить с цитированием
Старый 21.05.2009, 20:47   #4
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Заметил небольшую проблемму. Скажите почему, у вас, при выводе в OneRoom и ThreeRoom, 3 параметр, тоесть Этаж, не такое число,как я проинициализировал. Смотрите Я проинициализировал
Код:
Room      A(300, 4, 13);
OneRoom   AA(45,1,19);
ThreeRoom AAA(95,3,8);
cout<<etash<<AA.GetRoomFloor()<<end l; //Этаж
- выводит 1,вместо 19
cout<<etash<<AAA.GetRoomFloor()<<en dl; //Этаж - выводит 3,вместо 8.
prikolist вне форума Ответить с цитированием
Старый 21.05.2009, 20:52   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Потому что написано у Вас:
Код:
OneRoom(double sqr, int flr, double sqr_kitchen) : Room(sqr, 1, flr) { square_kitchen = sqr_kitchen; count_room=1;}
...
OneRoom   AA(45,1,19); // площадь 45, этаж 1, площадь кухни 19
и
Код:
ThreeRoom(double sqr, int flr, double sqr_kitchen) : OneRoom(sqr, flr, sqr_kitchen){ count_room=3;}
...
ThreeRoom AAA(95,3,8); // площадь 45, этаж 3, плозадь кухни 8
ЗЫ. Завязывайте уже с тупым копированием чужого кода и начинайте думать сами, а то так далеко не уедете

Последний раз редактировалось pu4koff; 21.05.2009 в 20:55.
pu4koff вне форума Ответить с цитированием
Старый 21.05.2009, 21:22   #6
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

count_room=1;(в классе OneRoom) и count_room = 3 (в классе ThreeRoom) - но это же 2 по счёту параметр в конструкторе Room базового класса, а при вызове метода GetRoomFloor,который находится в Room, почему не выводится 3 параметр в Floor,по идее, должен не выводится тогда 2 парметр - это count_room. Прошу прощения,если не так выразился.
prikolist вне форума Ответить с цитированием
Старый 21.05.2009, 21:29   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Создаем комнату:
Код:
OneRoom   AA(45,1,19);
и смотрим на конструктор:
Код:
OneRoom(double sqr, int flr, double sqr_kitchen) : Room(sqr, 1, flr) { square_kitchen = sqr_kitchen; count_room=1;}
Этаж передается вторым параметром. То есть, это 1.

Что не так? 3-й параметр - площадь кухни.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 21.05.2009, 21:45   #8
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

С ОнеРум, уяснил, а от куда 3-ка берётся в производном классе ThreeRoom вместо 8-ки?
prikolist вне форума Ответить с цитированием
Старый 21.05.2009, 21:49   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от prikolist
а от куда 3-ка берётся в производном классе ThreeRoom вместо 8-ки?
Оттуда же:
Код:
ThreeRoom AAA(95,3,8);
смотрим конструктор:
Код:
ThreeRoom(double sqr, int flr, double sqr_kitchen) : OneRoom(sqr, flr, sqr_kitchen){ count_room=3;}
Этаж во втором параметре.

Собственно, pu4koff ведь уже об этом написал.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 22.05.2009, 15:48   #10
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Последний вопрос. Не подскажите,зачем в производном классе OneRoom, используется метод void SetKitchenSquare. Просто,когда его убрать, вывод результата программы на экран, будет один и тотже.
void GetKitchenSquare понятно,для того,чтоб получить значение поля square_kitchen.
prikolist вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQLite3. Не могу вывести результат запроса. Clever Общие вопросы C/C++ 2 25.02.2009 09:55
разложить число на простые множители и вывести результат pakusya Паскаль, Turbo Pascal, PascalABC.NET 6 15.11.2008 03:07
Как вывести результат работы php скрипта eldar Работа с сетью в Delphi 21 08.08.2008 14:16
как вывести результат расчета????? в VB Николай969 Помощь студентам 1 17.01.2008 17:45
Множества. Не получается вывести результат RECREATOR Общие вопросы Delphi 3 24.12.2007 23:31