Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть1 / avmis_labs / неразобрано / 503 / Лаб_MMX / Каленчук / mmx / MMX
.cpp// 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();
}