IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Задача с использованием ООП(наследование), C++, Builder 6.0
sheka
сообщение 16.06.2011 13:26
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Почему не работает 7й пункт меню?
#include <iostream.h>
#include <conio.h>
#include <sys/types.h>
#include <time.h>
#include <math.h>

class cMyTimer{
private:
  clock_t Prev,First;
  int Enabled;
public:
  cMyTimer(){
    Enabled = 0;
  };
  double GetTime(){
    if (Enabled){
      clock_t d = Prev;
      return (double)((Prev = clock())- d)/CLOCKS_PER_SEC;
    }
    else return 0;
  };
  int GetEnabled(){
    return Enabled;
  };
  void ChangeEnabled(){
    if (Enabled = fabs(Enabled-1)){
      Prev = clock();
      First = Prev;
    };
  };
  double GetTimeFromStart(){
    if (Enabled) return (double)(clock()-First)/CLOCKS_PER_SEC;
    else return 0;
  };
};


class cMyTemp{
protected:
  double Temp;
public:
  cMyTemp(){
    Temp = 0;
  };
  double GetTemp(){
    return Temp;
  };
};

class cHeater: public cMyTemp{
protected:
  double k;
  int Enabled;
public:
  cHeater(): cMyTemp(){
    k = 0;
    Enabled = 0;
  };
  void Insert(){
    cout << "Vvedite koefficient: ";
    cin >> k;
    cout << "Vvedite sostoyanie 0/1: ";
    cin >> Enabled;
  };
  void ChangeTemp(double sec){
    Temp += Enabled*k*sec;
  };
};

class cFlat: public cMyTemp{
protected:
  cHeater Nature, Heater, Radiator, Conditioner;
  double StartTemp;
public:
  void Restart(){
    Temp = StartTemp;
  };
  void InsertNature(){
    cout << "Vvedite Parametri vneshnego okruzhenia:\n";
    Nature.Insert();
  };
  void InsertHeater(){
    cout << "Vvedite Parametri obogrevatelia:\n";
    Heater.Insert();
  };
  void InsertRadiator(){
    cout << "Vvedite Parametri radiatora:\n";
    Radiator.Insert();
  };
  void InsertConditioner(){
    cout << "Vvedite Parametri conditionera:\n";
    Conditioner.Insert();
  };
  void Insert(){
    cout << "Vvedite Parametri kvartiri:" << endl;
    cout << "Nachalnaia temperatura: ";
    cin >> StartTemp;
    InsertNature();
    InsertHeater();
    InsertRadiator();
    InsertConditioner();
  };
  cFlat(): cMyTemp(){
  };
  void ChangeTemp(double sec, int Enabled){
    Nature.ChangeTemp(sec);
    Heater.ChangeTemp(sec);
    Radiator.ChangeTemp(sec);
    Conditioner.ChangeTemp(sec);
    Temp= StartTemp+Nature.GetTemp()+Heater.GetTemp()+Radiator.GetTemp()+Conditioner.GetTemp();
  };
};


int main(){
  cMyTimer MyTimer;
  cFlat Flat;
  char c;
  Flat.Insert();
  do{
    cout<<"Vvedit nomer dii:"<<endl;
    cout<<"0 - Vuhid"<<endl;
    cout<<"1 - Zminiti Parametri navkolisniogo seredovisa"<<endl;
    cout<<"2 - Zminiti Parametri obigrivacha"<<endl;
    cout<<"3 - Zminiti Parametri radiatora"<<endl;
    cout<<"4 - Zminiti Parametri konditionera"<<endl;
    cout<<"5 - Pochati/zupiniti vidlik chasu modeliuvannia"<<endl;
    cout<<"6 - Vivesti resultati modeliuvannia na danii moment"<<endl;
    cout<<"7 - Skinuti do pochatkovih resultativ"<<endl;
    cin>>c;
    cout<<endl;
    switch (c){
    case '1': Flat.InsertNature(); break;
    case '2': Flat.InsertHeater(); break;
    case '3': Flat.InsertRadiator(); break;
    case '4': Flat.InsertConditioner(); break;
    case '5': MyTimer.ChangeEnabled(); break;
    case '6': Flat.ChangeTemp(MyTimer.GetTime(),MyTimer.GetEnabled());
      cout << "Vremia s nachiala modelirovaniya: " << MyTimer.GetTimeFromStart()<<endl;
      cout << "Temperatura v kvartire: " << Flat.GetTemp() <<endl; break;
    case '7': Flat.Restart(); break;
    }
  }while(c!='0');
  return 0;
} 
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 16.06.2011 14:54
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Это не говорит о том, что не срабатывает пункт №7. Это говорит о том, что он работает неправильно. Проверить, срабатывает ли он (передается ли ему управление при вводе 7-ки), можно одним-единственным способом:
  void Restart(){
	cout << "Restarted\n";  //  Вот таким
	Temp = StartTemp;
  };
. А вот как он должен РАБОТАТЬ - это вопрос к тебе, как к программисту.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 23.07.2025 4:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"