Калькулятор

Автор: Пользователь скрыл имя, 16 Сентября 2011 в 02:13, лабораторная работа

Краткое описание

Цель: Научиться работать с математическими функциями в Visual C++.
Задание: написать программу «Калькулятор».

Файлы: 1 файл

Отчеты.doc

— 364.50 Кб (Скачать)

            CString obr;

            double obrd;

            obrd=1/atof(edit);

            cut(obrd);

      } 

      UpdateData(FALSE); 

} 

void CCalc_MFCDlg::OnButtonSgn()

{

      // Изменение знака аргумента

      UpdateData(TRUE);

      double mind;

      mind=(-1)*atof(edit);

      cut(mind);

      UpdateData(FALSE); 

}

void CCalc_MFCDlg::OnButtonBs()

{

      // Удаление последнего введенного  символа

      UpdateData(TRUE);

      CString buffer_str;

      buffer_str=edit;

      buffer_str=buffer_str.Left(buffer_str.GetLength()-1);

      edit=buffer_str;

      UpdateData(FALSE);

}

void CCalc_MFCDlg::OnButtonEnt()

{

      // Функция, обрабатывающая нажатие  на кнопку "="

      UpdateData(TRUE); 

      if (input_arr[1]!=0)

      {

            if (!((input_arr[1]==1|input_arr[1]==5) & edit=="0"))

            {

            main_core(6, atof(edit));

            trace_out();

            }

            else

            {

            edit="devision by zero";

            UpdateData(FALSE);

            return;

            }

      }

      else

      {

            UpdateData(FALSE); 

            return;

      }

            UpdateData(FALSE); 

} 

float CCalc_MFCDlg::main_core(int new_action, float arg)

{

      // Вспомогательная функция, реализующая  логику вичислений

      // 1 - dev, 2 - mlt, 3 - min, 4 - pls, 5 - mod, 6 - handles button "="

      float temp;

      switch (new_action)

      {

      case 1:

            temp=add_core(new_action,arg); 

            break;

      case 2:

            add_core(new_action,arg);

            break;

      case 3:

            add_core(new_action,arg);

            break;

      case 4:

            add_core(new_action,arg);

            break;

      case 5:

            add_core(new_action,arg);

            break;

      case 6:

            new_action=1;

            add_core(new_action,arg);

            cut(input_arr[0]);

            input_arr[0]=0;

            input_arr[1]=0;

            break;

      } 

      return 0;

}

float CCalc_MFCDlg::add_core(int new_action, float arg)

{

      // Вспомогательная функция, реализующая  логику вичислений

      int prev_act;

      prev_act=input_arr[1];

      switch (prev_act)

      {

      case 1:

            if (arg==0)

            {

                  edit="devision by zero";

            }

            else

            {

                  input_arr[0]/=arg;

                  input_arr[1]=new_action;

            }

            break;

      case 2: 

            input_arr[0]*=arg;

            input_arr[1]=new_action;

            break;

      case 3: 

            input_arr[0]-=arg;

            input_arr[1]=new_action;

            break;

      case 4:

            input_arr[0]+=arg;

            input_arr[1]=new_action; 

            break;

      case 5:

            if (arg==0)

            {

                  edit="devision by zero";

            }

            else

            {

                  input_arr[0]=fmod(input_arr[0],arg);

                  input_arr[1]=new_action;

            }

            break;

      }

      return input_arr[0];

}

void CCalc_MFCDlg::cut(float input)

{

      // Вспомогательная функция, фильтрующая  выходной текст

      CString buffer_str;

      buffer_str.Format("%.3f", input);

      int bf_lg=buffer_str.GetLength();

      while(buffer_str.Right(1)=="0"& buffer_str.Find(".",0) >=0)

      {

            bf_lg=buffer_str.GetLength();

            buffer_str=buffer_str.Left(buffer_str.GetLength()-1);

      }

      if (buffer_str.Right(1)==".")

            buffer_str=buffer_str.Left(buffer_str.GetLength()-1); 

      edit=buffer_str;

}

Вывод:

В результате выполнения данной лабораторной работы были приобретены  навыки использования  математических функций в Visual C++.  
 

 
 

рис.1 окно программы «Калькулятор» 
 

Блок-схема: добавление цифры  в Поле ввода 

 
 
 
 
 
 
 
 
 

Блок-схемы: удаление последнего символа и обнуление  Поля ввода 

 
 

 
 
 
 
 
 
 
 

Блок-схемы: извлечение корня, изменение знака и функция 1/х 

 

 

 

 

 
 
 
 
 
 

Блок-схемы: реализация математических операций +, -, *, /, % 

Для различия математических действий используются числовые коды: 1 - dev, 2 - mlt, 3 - min, 4 - pls, 5 - mod, 

 
 

 

 

 

 
 
 

 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Лабораторная  работа №2

«Ряд  простых чисел» 

Цель: Научиться работать с рядами чисел. 

Задание: Получить ряд простых чисел и вывести его фрагмент задаваемого размера. 

Текст программы: 

void CSimpleDlg::OnButton1()

{

      UpdateData(true); 

      m_3="";

      UpdateData(false);

      UpdateData(true);

      int counter=1; 

      for (int i=1;;i++)

      {

Информация о работе Калькулятор