Скачиваний:
36
Добавлен:
15.09.2014
Размер:
2.35 Кб
Скачать
// MMX.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include "conio.h"
#include <windows.h>
#include <tchar.h>

using namespace std;


void doOper(char *,char *, int);

int _tmain(int argc, _TCHAR* argv[])
{
	char *op1;
	char *op2;
	int op;
	while(1)
	{
		system("CLS");
		op1=(char *)calloc(100,sizeof(char));
		op2=(char *)calloc(100,sizeof(char));
		cout << "Enter first string" << endl;
		cin >> op1;
		cout << "Enter second string" << endl;
		cin >> op2;
		cout << endl;
		cout << "Choose operation" << endl << "1 - '+'" << endl << "2 - '-'" << endl << "3 - '*'" << endl << "4 - '/'" << endl << "5 - exit" << endl;
		op=getch();
		doOper(op1, op2,op);
		free(op1);
		free(op2);
   	}
	return 0;
}

void doOper(char *op1, char *op2, int op)
{
	int len,a,b;
	double *res;
	a=strlen(op1);
	b=strlen(op2);
	if(a>b)
	{
		len=a;
		for(int i = b;i<a;i++)
			op2[i]='\0';
	}
	else
		if(a<b)
		{
			len=b;
			for(int i = a;i<b;i++)
				op1[i]='\0';
		}
		else
			len=a;
	res=(double *)calloc(len,sizeof(double));
	for(int i=0;i<len;i++)
		printf("%5d ",op1[i]);
	printf("\n");
	for(int i=0;i<len;i++)
		printf("%5d ",op2[i]);
	switch(op)
	{
	case '1':
		for(int i=0;i<len;i++)
		{
			double a=(int)op1[i];
			double b=(int)op2[i];
			double r;
			_asm
			{
				FLD a
				FLD b
				FADD
				FSTP r
			}
			res[i]=r;
		}
		break;
	case '2':
		for(int i=0;i<len;i++)
		{
			double a=op1[i];
			double b=op2[i];
			double r;
			_asm
			{
				FLD a
				FLD b
				FSUB
				FSTP r
			}
			res[i]=r;
		}
		break;
	case '3':
		for(int i=0;i<len;i++)
		{
			double a=op1[i];
			double b=op2[i];
			double r;
			_asm
			{
				FLD a
				FLD b
				FMUL
				FSTP r
			}
			res[i]=r;
		}
		break;
	case '4':
		for(int i=0;i<len;i++)
		{
			double r;
			//double a=op1[i];
			//double b=op2[i];
            double a=10;
            double b=3;
			if(b==0)
			{
				r=0;
				break;
			}
			
			_asm
			{
				FLD a
				FLD b
				FDIV
				FSTP r
			}
			//res[i]=r;
            
            res[1]=r;
            printf("%lf",res[1]);
            getch();
		}
		break;
	case '5':
		exit(0);
		break;
	}

	printf("\n\n");
	for(int i=0;i<len;i++)
		printf("%lf ",res[i]);
	getch();
}