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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 18:02   #1
serg268
 
Регистрация: 19.09.2010
Сообщений: 7
По умолчанию Есть знающие люди???

Есть знающие люди??? Нужны комментарии к программе (очень подробные) !!! Часть 1-я

Код:
//-------------------------------------------------------------------
#include <vcl.h>//Директива препроцессора #include <vcl.h> предназначена для включения в текст проекта заголовочного файла, ссылающегося на описания классов библиотеки компонентов.
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)//__fastcall говорит компилятору, что аргументы надо кидать в регистр...
        : TForm(Owner)
{
       Reset();//результат

}
//---------------------------------------------------------------------------

void TForm1::Reset()
{
  Pr.ReSet();//очистка операций
  num = denum = ""; //пустой знаменатель и числитель
  Pr.OprtnSet(Add); //добавляем операцию
  this_Frac.Reset("0/1");// установка по умолчанию
  Memo1->Lines->Strings[0] = this_Frac.GetFrac(dr); //объединения значения в строку
  right = false;
  ravno = false;
  back = false;

}
//---------------------------------------------------------------------------
void TForm1::Reset1()
{
  Pr.ReSet();//очистка операций
  num = denum = ""; //очистка значений
  Pr.OprtnSet(Add);//добавляем операцию
  right = false;
  ravno = false;
  back = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Reset();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)//кнопка разности
{
 if(ravno)
  Reset1();
 Pr.Rop_Set(this_Frac);
 if(!ravno) Pr.OprtnRun();
 Pr.OprtnSet(Sub);
 num = denum = "";
 right = false;
 back = false;
 Memo1->Lines->Strings[0] = Pr.ReadLop_Res().GetFrac(dr);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button9Click(TObject *Sender)//кнопка сложения
{
 if(ravno)
  Reset1();
 Pr.Rop_Set(this_Frac);
 if(!ravno) Pr.OprtnRun();
 Pr.OprtnSet(Add);
 num = denum = "";
 right = false;
 back = false;
 Memo1->Lines->Strings[0] = Pr.ReadLop_Res().GetFrac(dr);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)//кнопка равно
{
 if(!ravno) Pr.Rop_Set(this_Frac);
 Pr.OprtnRun();
 num = denum = "";
 output = Pr.ReadLop_Res().GetFrac(dr);//вывод
 Memo1->Lines->Strings[0] = output;
 output = "";
 this_Frac = Pr.ReadLop_Res();
 ravno = true;
 right = false;
 back = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button13Click(TObject *Sender)//кнопка(числитель|знаменатель)
{
 if(ravno)
  Reset();
 denum = "";
 right = true;
 back = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button21Click(TObject *Sender)//кнопка "ноль"
{
 if(ravno) //если нажато равно
  Reset();
 TButton *b1 = (TButton*)Sender;
 if(!right)
 {
   num = num + b1->Tag;//к пустому числителю прибовляем кнопку
   this_Frac.Reset(num + "/1");
 }
 else
 {
   denum = denum + b1->Tag;//знаменатель

try
{
double   c = num/denum;
}
catch (EDivByZero &E) //EDivByZero дочерний класс от ElntError.(Вызывается при целочисленном делении на ноль)
{
  ShowMessage("Ошибка: на ноль делить нельзя!!!.\n");
} catch (...) {
  ShowMessage("Произошла ошибка в ходе выполнения операции.");
}
   if(num == "")//если знаменатель пустой,
     num = "0";// то приравниваем к нулю
   this_Frac.Reset(num + "/" + denum);//устанавливаем дробь
 }

 Memo1->Lines->Strings[0] = this_Frac.GetFrac(dr);
 back = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
 if(Key >= '0' && Key <= '9')
 {
  if(ravno)
   Reset();
  if(!right)
  {
    num = num + Key;
    this_Frac.Reset(num + "/1");
  }
  else
  {
    denum = denum + Key;
    if(num == "")
      num = "0";
    this_Frac.Reset(num + "/" + denum);
  }
  Memo1->Lines->Strings[0] = this_Frac.GetFrac(dr);
  back = false;
 }

 switch(Key)
 {
  case ',': Button13Click(Send); break;
  case '+': Button9Click(Send); break;
  case '-': Button8Click(Send); break;
  case '=': Button5Click(Send); break;
 }
}

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
serg268 вне форума Ответить с цитированием
Старый 05.03.2011, 15:03   #2
code doctor
Пользователь
 
Регистрация: 06.10.2010
Сообщений: 13
По умолчанию

оказывается, никому твои комментарии не нужны... даже "Часть 1-я"...
code doctor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть люди которые знаю мат кад? Cosax Софт 0 21.06.2010 22:06
Есть ли люди...?? Xander Свободное общение 1 02.07.2008 14:30