|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2009, 01:16 | #1 |
Пользователь
Регистрация: 02.04.2009
Сообщений: 11
|
Помогите пожалуста с Программой на С++
я пишу свой первый калькулятор!! В С++ новичек так что не все знаю! Помогите пожалуста с одной проблемкой!
Мне надо: 1)чтобы в начале в Edit1 нельзя было писать первой цифрой 0 а вернее если написана 0 то далее только (,) и ничего больше! 2) Чтобы нельзя было писать (,) много раз в поле Edit1 а то они могут ставиться до бесконечности! 3) не срабатывает мое сообщение о том что на 0 делить нельзя!! выдает просто системное сообщение на англ языке! типа так делать не надо=)) Вот листинг программы: #include <vcl.h> #pragma hdrstop #include "Unit1.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; float i,r,p; int mode; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { Edit1->Text= Edit1->Text+"1"; } void __fastcall TForm1::Button2Click(TObject *Sender) { Edit1->Text= Edit1->Text+"2"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Edit1->Text= Edit1->Text+"3"; } void __fastcall TForm1::Button4Click(TObject *Sender) { Edit1->Text= Edit1->Text+"4"; } void __fastcall TForm1::Button5Click(TObject *Sender) { Edit1->Text= Edit1->Text+"5"; } void __fastcall TForm1::Button6Click(TObject *Sender) { Edit1->Text= Edit1->Text+"6"; } void __fastcall TForm1::Button7Click(TObject *Sender) { Edit1->Text= Edit1->Text+"7"; } void __fastcall TForm1::Button8Click(TObject *Sender) { Edit1->Text= Edit1->Text+"8"; } void __fastcall TForm1::Button9Click(TObject *Sender) { Edit1->Text= Edit1->Text+"9"; } void __fastcall TForm1::Button10Click(TObject *Sender) { Edit1->Text= Edit1->Text+"0"; } void __fastcall TForm1::Button11Click(TObject *Sender) { i=StrToFloat(Edit1->Text); mode=2; Edit1->Text=""; Edit1->SetFocus(); } void __fastcall TForm1::Button12Click(TObject *Sender) { i=StrToFloat(Edit1->Text); mode=3; Edit1->Text=""; Edit1->SetFocus(); } void __fastcall TForm1::Button13Click(TObject *Sender) { i=StrToFloat(Edit1->Text); mode=4; Edit1->Text=""; Edit1->SetFocus(); } void __fastcall TForm1::Button14Click(TObject *Sender) { i=StrToFloat(Edit1->Text); mode=5; Edit1->Text=""; Edit1->SetFocus(); } void __fastcall TForm1::Button15Click(TObject *Sender) { switch (mode) { case 2: p=StrToFloat(Edit1->Text); r=i+p; Edit1->Text=FloatToStrF(r,ffGeneral,7,2 ); break; case 3: p=StrToFloat(Edit1->Text); r=i-p; Edit1->Text=FloatToStrF(r,ffGeneral,7,2 ); break; case 4: p=StrToFloat(Edit1->Text); r=i*p; Edit1->Text=FloatToStrF(r,ffGeneral,7,2 ); break; case 5: p=StrToFloat(Edit1->Text); r=i/p; Edit1->Text=FloatToStrF(r,ffGeneral,7,2 ); break; } i=StrToFloat(Edit1->Text); p=StrToFloat(Edit1->Text); try { r=i/p; } catch (EZeroDivide &e) { ShowMessage("На 0 делить нельзя!!!"); Edit1->SetFocus(); return; } Edit1->SetFocus(); } void __fastcall TForm1::Button17Click(TObject *Sender) { Edit1-> Text=""; Edit1->SetFocus(); } void __fastcall TForm1::Button16Click(TObject *Sender) { Form1->Close(); } void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) { if ( (Key>= '0') && (Key <= '9')) return; if (Key==DecimalSeparator) { if ( (Edit1->Text).Pos(DecimalSeparator)!=0) Key=0; return; } if (Key==VK_BACK) return; Key=0; } void __fastcall TForm1::Button18Click(TObject *Sender) { Edit1->Text= Edit1->Text+","; Edit1->SetFocus(); } |
17.04.2009, 01:48 | #2 |
Заснувший
Форумчанин
Регистрация: 13.03.2009
Сообщений: 213
|
Для вычисления нуля с запятой - просто сравнивай текст со строкой "0", если строка равна нулю то разреши запятую и больше ни чего кроме неё.
ДЛя подсчёта числа запятых ищи запятую в поле ввода, если она есть то не разрешай больше этого символа А насчёт деления на ноль, просто проверяй в своём пятом режиме перед делением равенство переменной нулю case 5: p=StrToFloat(Edit1->Text); if (p==0)....................... r=i/p; Edit1->Text=FloatToStrF(r,ffGeneral,7,2 ); break; } Последний раз редактировалось Виталий Серов; 17.04.2009 в 01:52. |
17.04.2009, 13:11 | #3 |
Пользователь
Регистрация: 02.04.2009
Сообщений: 11
|
Спасибо с выводом сообщения разобрался! не пойму правда почему у меня тогда не выводило вроде правильно же!
Но в том то и проблемка я не знаю как проверить строчку на наличие 0 и если он там есть то запретить символы кроме (,). Думаю так же будет и с проверкой запятой как встретится то запретить ее! но как это сделать я не знаю! помогите пожалуста! Заранее огромное спасибо |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите,пожалуста! | Регина | Помощь студентам | 5 | 30.05.2007 23:02 |
Помогите пожалуста!!! | juden | Общие вопросы Delphi | 2 | 23.05.2007 14:37 |