Разработка программы калькулятора

Автор работы: Пользователь скрыл имя, 19 Апреля 2011 в 15:49, курсовая работа

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

Разработать класс «калькулятор», выполняющий указанные в варианте операции. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу сообщений в случае ошибок.
Протокол работы калькулятора записать в файл. Предусмотреть возможность просмотра файла из программы.
Вид данных: квадратные уравнения (в действительных или комплексных числах)
Операции: вычисление корней в форме, заданной пользователем.

Содержимое работы - 1 файл

Курсовик по проге.doc

— 75.00 Кб (Скачать файл)

      }

      if(f.getia()==f.getib()==f.getic()==0)  

      {

             D2r=pow(f.getrb(),2)-4*f.getra()*f.getrc(),0.5;

            if(D2r>=0)

            {

                  rx0=(-f.getrb()-pow(D2r,0.5))/(2*f.getra());

                  rx1=(-f.getrb()+pow(D2r,0.5))/(2*f.getra());

                  ix0=ix1=0;

            }

            else

            {

                  rx0=rx1=-f.getrb()/(2*f.getra());

                  ix0=-pow(-D2r,0.5)/(2*f.getra());

                  ix1=-ix0;

            }

      }

      else  

      {

            D2r=pow(f.getrb(),2)-pow(f.getib(),2)-4*f.getra()*f.getrc()+4*f.getia()*f.getic();

            D2i=2*f.getib()-4*f.getra()*f.getic()-4*f.getia()*f.getrc();

            float dr,di;

            dr=pow(pow(pow(D2r,2)+pow(D2i,2),0.5)-fabs(D2r)/2,0.5);

            di=pow(pow(pow(D2r,2)+pow(D2i,2),0.5)+fabs(D2r)/2,0.5); 

            rx0=((-f.getrb()-dr)*f.getra()+(-f.getib()-di)*f.getia())/(2*(pow(f.getra(),2)+pow(f.getia(),2)));

            rx1=((-f.getrb()+dr)*f.getra()+(-f.getib()+di)*f.getia())/(2*(pow(f.getra(),2)+pow(f.getia(),2))); 

            ix0=((-f.getib()-di)*f.getra()-(-f.getrb()-dr)*f.getia())/(2*(pow(f.getra(),2)+pow(f.getia(),2)));

            ix0=((-f.getib()+di)*f.getra()-(-f.getrb()+dr)*f.getia())/(2*(pow(f.getra(),2)+pow(f.getia(),2)));

      }

}

cinterface.h 

#include <stdio.h>

#include “csolve.h”

class cinterface

{

public:

      cinterface();

      void crkvyr(ckvur &f);

      void solur(kvyr f,csolve x);

      void rlog();

}; 

cinterface.cpp 

#include <stdio.h>

#include “csolve.h”

cinterface::cinterface()

{

} 

void cinterface::crkvyr(kvyr &f)

{

      FILE *p;

      int c=0;

      p=fopen("c:\\log.txt","a+");

      float ar=0;

      float ai=0;

      float br=0;

      float bi=0;

      float cr=0;

      float ci=0; 

      printf("\nВвод коэффициентов a, b, c квадратного уравнения :ax^2+bx+c=0\nвы можете по отдельности ввести вещественное или мнимое число");

      while(1)

      {

            printf("\nвведите вещественную часть числа a:  ");

            scanf("%f",&ar);

            printf("\nвведите мнимую часть числа a:  ");

            scanf("%f",&ai);

            printf("\nвведите вещественную часть числа b:  ");

            scanf("%f",&br);

            printf("\nвведите мнимую часть числа b:  ");

            scanf("%f",&bi);

            printf("\nвведите вещественную часть числа c:  ");

            scanf("%f",&cr);

            printf("\nвведите мнимую часть числа c:  ");

            scanf("%f",&ci);

            printf("\nуравнение имеет вид:(%.3f+i(%.3f))x^2+(%.3f+i(%.3)f)x+(%.3f+i(%.3)f)=0",ar,ai,br,bi,cr,ci);

            printf(" \nвведите 1 чтобы продолжить. нажмите 0 или любую клавишу чтобы повторить ввод коэффициентов: "); 

            scanf("%d",&c);

            if(c==1)

            {

                  fprintf(p,"Eуравнение  имеет вид:(%.3f+i(%.3f))x^2+(%.3f+i(%.3f))x+(%.3f+i(%.3f))=0  -  %c\n",ar,ai,br,bi,cr,ci,c);

                  f.fillk(ar,br,cr,ai,bi,ci);

                  break;

            }

      }

      fclose(p);

} 

void cinterface::solur(kvyr f,csolve x)

{

      FILE*p;

      p=fopen("c:\\log.txt","a+");

      float r0,i0,r1,i1;

      x.solve(f);

      r0=x.getrx0();

      i0=x.getix0();

      r1=x.getrx1();

      i1=x.getix1();

      printf("\nрешение  данного уравнения:\nx1=%.3f+i(%.3f);\nx1=%.3f+i(%.3f);\n",r0,i0,r1,i1);

      fprintf(p,"Sрешаемое  уравнение имеет вид:(%.3f+i(%.3f))x^2+(%.3f+i(%.3f))x+(%.3f+i(%.3f))=0; его корни имеют вид: x1=%.3f+i(%.3)f; x2=%.3f+i(%.3f);\n",f.getra(),f.getia(),f.getrb(),f.getib(),f.getrc(),f.getic(),r0,i0,r1,i1);

      fclose(p);

} 

void cinterface::rlog()

{

      FILE *p;

      float rar,rai,rbr,rbi,rcr,rci,rx0r,rx0i,rx1r,rx i;

      char c;

      int k;

      p=fopen("c:\\log.txt","a+");

      while(!feof(p))

      {

            c=fgetc(p);

            if(c=='E')

            {

                  fseek(p,-1,1);

                  fscanf(p,"%.3f %.3f %.3f %.3f %.3f %.3f %c",&rar,&rai,&rbr,&rbi,&rcr,&rci,&k);

                  printf("уравнение  имеет вид:(%.3f+i(%.3f))x^2+(%.3f+i(%.3f))x+(%.3f+i(%.3f))=0  -  %d\n",rar,rai,rbr,rbi,rcr,rci,k); 

            }

            else

            {

                  if(c=='S')

                  {

                        fseek(p,-1,1);

                        fscanf(p,"%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f",&rar,&rai,&rbr,&rbi,&rcr,&rci,&rx0r,&rx0i,&rx1r,&rx1i);

                        printf("решаемое  уравнение имеет вид:(%.3f+i(%.3f))x^2+(%.3f+i(%.3f))x+(%.3f+i(%.3f))=0; его корни имеют вид: x1=%.3f+i(%.3f); x1=%.3f+i(%.3f);\n",rar,rai,rbr,rbi,rcr,rci,rx0r,rx0i,rx1r,rx1i);

                  }

                  else

                        printf("ошибка чтения лог-файла"); 

            }

      }

      fclose(p);

} 

main.cpp 

#include “interface.h”

#include <stdio.h>

void main()

{

      kvyr f;

      csolve g;

      cinterface h;

      int cont;

      while(1)

      {

            h.crkvyr(f);

            h.solur(f,g);

            printf("\n нажмите 1-показать лог-файл; 0 или любая другая клавиша-продолжить работу:");

            scanf("%d",&cont);

            if(cont==1)

                  h.rlog();

            printf("\n нажмите 1-прекратить работу; 0 или любая другая клавиша-продолжить решение квадратных уравнений:");

            scanf("%d",&cont);

            if(cont==1)

                  break;

      }

} 

Информация о работе Разработка программы калькулятора