Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   помогите доделать последнее действие (http://forum.oszone.net/showthread.php?t=206272)

maximusoida 05-05-2011 22:09 1670935

помогите доделать последнее действие
 
Вложений: 1
Здравствуйте делаю для лабы калькулятор я его почти закончил, но препод попросил сделать ввод с клавы. Мысленно я знаю как это сделать, но физически у меня не выходит, может кто подскажет? Моя прога полностью здесь http://zalil.ru/30971503, но я думаю проще часть кода здесь разместить: у меня есть быдло код вводе цифр поэтому полностью не буду писать, итак мне нужно реализовать, вот что:
нужно реализовать +,-,*,/,= то есть ввёл с клавы число нажал +, ввёл второе число, нажал = и выводится ответ

я так понимаю можно использовать action, но как-то я не понимаю как их можно у меня в проге использовать

сам код, здесь я его максимально минимизировал, в проге он больше, и сделано больше кнопок

Код:

float f=0; // если f==0 то удаляем нуль в строке
// и пишем нужное число с кнопки

int arifmetic, backspace;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{


ClientHeight = 257; ClientWidth = 499;
TStringList *List = new TStringList;

f=0; //Ждем первую цифру
arifmetic=0;
StaticText1->Text = 0;

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

// кнопка С
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StaticText1->Text = "0";
arifmetic= 0;
f = 0;
}


//Цифра 1---------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if( f == 0)
{
StaticText1->Text = "1";
f = 1;
}
else
StaticText1->Text = StaticText1->Text + "1";


//ОСТАЛЬНЫЕ ЦИФРЫ СДЕЛАНЫ ТАК ЖЕ, КРОМЕ 0 ЕСТЕСТВЕННО


//Кнопка +------------------------------------------------------
void __fastcall TForm1::Button25Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 1;
f = 0;
}
//Кнопка - -----------------------------------------------------------
void __fastcall TForm1::Button24Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 2;
f = 0;
}
//Кнопка * ------------------------------------------------------------
void __fastcall TForm1::Button23Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 3;
f = 0;
}
//Кнопка / ----------------------------------------------------------------
void __fastcall TForm1::Button26Click(TObject *Sender)
{
x=StrToFloat(StaticText1->Text);
arifmetic = 4;
f = 0;
}
//Кнопка =----------------------------------------------------------------

void __fastcall TForm1::Button22Click(TObject *Sender)
{ switch (arifmetic)
{
case 1:
x += StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 2:
x -= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 3:
x *= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
case 4:
x /= StrToFloat(StaticText1->Text);
StaticText1->Text=FloatToStrF(x,ffGeneral,7,7);
f=0;
break;
}
// ввод цифр с клавы
void __fastcall TForm1::StaticText1KeyPress(TObject *Sender, char &Key)
{ f=0;
if (Key<'0' || Key>'9') Key=0; // фильтр ввода
switch (Key)
{case 1:
Button2Click(Sender);
break;
case 2:
Button3Click(Sender);
break;
case 3:
Button4Click(Sender);
break;
case 4:
Button5Click(Sender);
break;
case 5:
Button6Click(Sender);
break;
case 6:
Button7Click(Sender);
break;
case 7:
Button8Click(Sender);
break;
case 8:
Button9Click(Sender);
break;
case 9:
Button10Click(Sender);
break;
case 10:
Button11Click(Sender);
break;
}
}

p.s. сегодня копался пытаясь сделать эти злощастные кнопки, но в итоге получилось сделать (.), помогите описать хотя бы (+) и 0, дальше сам разберусь

BlackEric 05-05-2011 23:13 1670964

Вводите число с клавы в TEDit.
При нажатии кнопки с действием забирайте число с экрана в переменную.


Время: 18:19.

Время: 18:19.
© OSzone.net 2001-