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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 20:18   #1
Иринка26
Пользователь
 
Аватар для Иринка26
 
Регистрация: 17.02.2010
Сообщений: 13
Вопрос Калькулятор

Привет.нужно в программе калькулятор,зделать так чтоб кнопка с запятой печаталась один раз, и на ноль нельзя было делить..
помогите кто может
Иринка26 вне форума Ответить с цитированием
Старый 17.02.2010, 20:21   #2
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

язык программирования?
Google2010 вне форума Ответить с цитированием
Старый 17.02.2010, 20:25   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

200 руб сделаю на C++, C#, Delphi, VB
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 18.02.2010, 11:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Действительно, какой язык, и неплохо еще бы наработками похвастаться, чтоб знать от чего отталкиваться в помощи тебе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.02.2010, 14:54   #5
syava
 
Регистрация: 17.02.2010
Сообщений: 4
По умолчанию delfi7

в delfi так:
вставить в деление:
if "имя переменой без кавычек"=0 then
MesageDlg('деление на ноль');
syava вне форума Ответить с цитированием
Старый 18.02.2010, 19:24   #6
Иринка26
Пользователь
 
Аватар для Иринка26
 
Регистрация: 17.02.2010
Сообщений: 13
По умолчанию

язык делфи..
Код:
var a,b,p,ot:real;

procedure TForm1.Button11Click(Sender: TObject);//кнопка сложить
begin
 if Edit1.Text<>' ' then begin
 a:=strtofloat(Edit1.Text);
 Edit1.Text:=' ';
 p:=1;
end;

procedure TForm1.Button12Click(Sender: TObject);//вычесть
begin
 if Edit1.Text<>' ' then begin
 a:=strtofloat(Edit1.Text);
 Edit1.Text:=' ';
 p:=2;
end;

procedure TForm1.Button13Click(Sender: TObject);//умножить
begin
 if Edit1.Text<>' ' then begin
 a:=strtofloat(Edit1.Text);
 Edit1.Text:=' ';
 p:=3;
end;

procedure TForm1.Button14Click(Sender: TObject);//разделить
begin
 if Edit1.Text<>' ' then begin
 a:=strtofloat(Edit1.Text);
 Edit1.Text:=' ';
 p:=4;
end;

procedure TForm1.Button15Click(Sender: TObject);//кнопка равно
begin
 if Edit1.Text<>' ' then begin
 b:=strtofloat(Edit1.Text);
 Edit1.Text:=' ';
 if p=1 then ot:=a+b;
 if p=2 then ot:=a-b;
 if p=3 then ot:=a*b;
 if (p=4) and (b<>0) then ot:=a/b else
 Edit1.Text:='Деление на ноль';
end;
и все равно он делит на ноль(((
и еще не могу сделать чтоб запятая печаталась только один раз..





end;

Последний раз редактировалось Stilet; 19.02.2010 в 08:28.
Иринка26 вне форума Ответить с цитированием
Старый 18.02.2010, 19:39   #7
syava
 
Регистрация: 17.02.2010
Сообщений: 4
По умолчанию

за место ' ' напиши 0
syava вне форума Ответить с цитированием
Старый 18.02.2010, 19:49   #8
Иринка26
Пользователь
 
Аватар для Иринка26
 
Регистрация: 17.02.2010
Сообщений: 13
По умолчанию

это в каком месте?
Иринка26 вне форума Ответить с цитированием
Старый 19.02.2010, 08:39   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ирочка, я бы тебе рекомендовал для каждой кнопки определить одну и ту же процедуру обработки клика, в которой прописать вотпримерно в таком ключе:
Код:
procedure TForm1.Button5Click(Sender: TObject);
var o:integer;
begin
// Проверяем введено ли число
 if not TryStrToInt(Edit1.Text,o) then exit;
// Если кликнута кнопка +
 if (sender=Button1) then tag:=tag+o;
// Если кликнута кнопка -
 if (sender=Button2) then tag:=tag-o;
// Если кликнута кнопка *
 if (sender=Button3) then tag:=tag*o;
// Если кликнута кнопка / и число не равно 0
 if (sender=Button4)and(o<>0) then tag:=tag div o;
// Если кликнута кнопка = то вывести
 if (sender=Button5) then begin caption:=inttostr(tag);tag:=0;end;
 Edit1.Text:='';
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.02.2010, 08:52   #10
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

по поводу запятой
у поля ввода числа есть событие OnKeypress обрабатывайте его следующим образом
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = ',' then
    Key := DecimalSeparator; // запятую заменяем на разделитель для числа

  if Key = '.' then
    Key := DecimalSeparator; // точку заменяем на сепаратор (на всякий случай)

  if not (Key in ['0'..'9','-',DecimalSeparator,#8,#13]) // символы которые пропускаются
    or ((Key = DecimalSeparator) // все цифры знак минус разделитель
    and (POS (DecimalSeparator, Edit1.Text) > 0)) // запрет на второй сепаратор
    or ((Key = '-') and (POS ('-', Edit1.Text) > 0)) // запрет на второй минус
    or ((Key = '-') and (Edit1.SelStart <> 0)) // запрет на минус не вначале цифры
    then // (можно и предыдущей строчки но так лучше для понимания)
  begin
      Key := #0; // запрещенный символ заменяем нулем
      MessageBeep (MB_OK); // биб в спикир
  end;
end;
Google2010 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор BaRSyk174 Помощь студентам 4 26.01.2010 20:19
Калькулятор slivochny Общие вопросы C/C++ 4 17.06.2009 20:49
Калькулятор program09 Общие вопросы C/C++ 1 01.06.2009 15:39
Калькулятор на С++ alexxxxZxxxx Общие вопросы C/C++ 3 28.03.2009 22:07
Калькулятор Nixtone Помощь студентам 7 03.07.2008 23:17