1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Калькулятор

Тема в разделе "С и С++", создана пользователем Maycal, 14 окт 2007.

Статус темы:
Закрыта.
  1. Maycal

    Maycal Гость

    Репутация:
    0
    Доброе время суток. Сейчас я делаю калькулятор. Он почти готов, но не хватает цифровых кнопок. То есть при нажатие на кнопку 1, 2, 3, 4... в Edit1 должны появляться цифры соответствующие кнопкам. Я встал на единственной проблеме - при нажатие на любу из кнопок появляеться только одно число, например 7. А если пользователю нужно ввести 77? Или 7777? То есть мой вопрос вот в чом: как сделать так, чтобы при нажатие на кнопку появлялось число например семь. А при повторном нажатие появлялось бы уже не сем, а удвоенное - 77. Если кнопка семь нажимаеться еще раз, то уже 777 и т.д. Пожалуйста помогите.
     
  2. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Для: Maycal
    Поиск по ключевому слову "Калькулятор" в разделе "С++" никто не отменял
     
  3. Romchik

    Romchik Гость

    Репутация:
    0
    так на Bilder6:

    Код:
    #include <vcl.h>
    #pragma hdrstop
    
    #include "CalcForm.h"
    
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    
    float accum; // рез-т выполнения операции
    int op;	 /* операция:
    1 - "+";
    2 - "-";
    0 - "выполнить" (нажата кнопка "=" */
    
    int f;	  /* f == 0 - ждем первую цифру нового числа, например, после выполнения
    операции, когда на индикаторе результат.
    f == 1 - ждем остальные цифры */
    
    // конструктор формы
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {
    f =0;	 // ждем первую цифру
    op = 0;  // предыдущая операция выполнена
    StaticText1->Caption = 0;
    }
    
    // кнопка "0"
    void __fastcall TForm1::Btn0Click(TObject *Sender)
    {
    if ( f != 0)
    StaticText1->Caption = StaticText1->Caption + "0";
    }
    
    // 1
    void __fastcall TForm1::Btn1Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "1";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "1";
    }
    
    // 2
    void __fastcall TForm1::Btn2Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "2";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "2";
    }
    
    // 3
    void __fastcall TForm1::Btn3Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "3";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "3";
    }
    
    // 4
    void __fastcall TForm1::Btn4Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "4";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "4";
    }
    
    // 5
    void __fastcall TForm1::Btn5Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "5";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "5";
    }
    
    // 6
    void __fastcall TForm1::Btn6Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "6";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "6";
    }
    
    //7
    void __fastcall TForm1::Btn7Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "7";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "7";
    }
    
    // 8
    void __fastcall TForm1::Btn8Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "8";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "8";
    }
    
    // 9
    void __fastcall TForm1::Btn9Click(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "9";
    f = 1;
    }
    else
    StaticText1->Caption = StaticText1->Caption + "9";
    }
    
    // "," (десятичная точка)
    void __fastcall TForm1::BtnkClick(TObject *Sender)
    {
    if ( f == 0)
    {
    StaticText1->Caption = "0,";
    f = 1;
    }
    else
    {
    if ( StaticText1->Caption.Pos(",") == 0)
    StaticText1->Caption = StaticText1->Caption + ",";
    }
    }
    
    // "С" (сброс)
    void __fastcall TForm1::BtnCClick(TObject *Sender)
    {
    StaticText1->Caption = "0";
    accum = 0;
    op = 0;
    f = 0; // ждем первую цифру числа
    }
    
    // выполнить операцию
    void __fastcall TForm1::DoOp(void)
    {
    /* accum содержит результат предыдущей операции.
    Сейчас надо выполнить операцию, код которой op.
    перанд находится на индикаторе.*/
    
    float op2 = StrToFloat(StaticText1->Caption);
    switch ( op )
    {
    case 0 : accum = op2; break;
    case 1 : accum += op2; break;
    case 2 : accum -= op2; break;
    }
    StaticText1->Caption = FloatToStrF(accum,ffGeneral,6,3);
    }
    
    // "+"
    void __fastcall TForm1::BtnPClick(TObject *Sender)
    {
    /* надо выполнить предыдущую операцию,
    вывести результат на индикатор, запомнить
    текущую операцию и установить режим ввода
    нового числа */
    if ( f != 0)
    {
    // на индикаторе есть число
    DoOp(); // выполнить предыдущую операцию
    f = 0; // ждем первую цифру нового числа
    }
    op =1;
    }
    
    // "-"
    void __fastcall TForm1::BtnMClick(TObject *Sender)
    {
    if ( f != 0)
    {
    // на индикаторе есть число
    DoOp(); // выполнить предыдущую операцию
    f = 0; // ждем первую цифру нового числа
    }
    op = 2; // запомнить текущую операцию
    }
    
    // "="
    void __fastcall TForm1::BtnEClick(TObject *Sender)
    {
    if ( f != 0)
    {
    DoOp(); // выполнить опрерацию
    f = 0; // ждем первую цифру нового числа
    }
    op = 0;
    }
    можно сократить...,но текст сложнее чуток будет.вообщем отталкивайся примерно от этого!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей