#include <iostream>
#include <string>
#include <math.h>
#include <sstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
void main()
{
setlocale(0,"");
string str,str1;
string::size_type sz;
string::size_type sz1;
double x,a,b;
double y;
bool readingSuccess = false;
bool readingSuccess1 = false;
float n,n1;
{
cout << "введите число Х" << endl;
while(!readingSuccess)
{
try
{
getline(cin, str);
for(int i = 0;str.size() > i;i++)
{
if ((str[i]=='0')&&(str[i+1]!=','))
{
str.erase(i,1);
--i;
}
else
break;
}
if (str.find(',') != string::npos)
{
string::reverse_iterator i = str.rbegin();
for (

i != str.rend()) && (*i == '0'); ++i);
str.erase(i.base(), str.end());
}
{
cout << str << std::endl;
if (str[0]==',')
{
cout << "число не может начинаться с запятой" << "\n";
cout << " введите число Х " << "\n";
else
{
if (str.find(',') == string::npos)
n = 9;
else
n = 10;;
}
x = stold(str, &sz);
if(str.size() == sz)
{
if(str.size() >= n)
{
cout <<"длинное число, введите число поменьше"<< endl;
}}
else
{
if(0 == x)
{
cout << "Х не может равняться 0 " << endl;
cout << " введите число Х " << endl;
}
else
{
readingSuccess = true;
}
}
}
else
{
cout << "вы ввели неправельный символ " << endl;
cout << " введите число Х " << endl;
}
}
catch(invalid_argument e)
{
cin.clear();
cin.sync();
cout << "вы ввели буквы" << endl;
cout << " введите число Х " << endl;
}
}
}
cout << " введите число А" << endl;
while(!readingSuccess1)
{
try
{
getline(cin, str1);
for(int l = 0;str1.size() > l;l++)
{
if ((str1[l]=='0')&&(str1[l+1]!=','))
{
str1.erase(l,1);
--l;
}
else
break;
}
if (str1.find(',') != string::npos)
{
string::reverse_iterator i = str1.rbegin();
for (

i != str1.rend()) && (*i == '0'); ++i);
str1.erase(i.base(), str1.end());
}
std::cout << str1 << std::endl;
if (str1[0]==',')
{
cout << "число не может начинаться с запятой" << "\n";
cout << "введите число А" << "\n";
}
else
{
if (str1.find(',') == string::npos)
n1 = 9;
else
n1 = 10;
}
a = stold(str1, &sz1);
if(str1.size() == sz1)
{
if(str1.size() >= n1)
{
cout <<"длинное число, введите число поменьше " << endl;
}
cin.clear();
cin.sync();
cout << " введите число A " << endl;
}
else
{
readingSuccess1 = true;
}
}
}
else
{
cout << "вы ввели неправельный символ " << endl;
cout << " введите число A" << endl;
}
}
catch(invalid_argument u)
{
cin.clear();
cin.sync();
cout << "вы ввели буквы" << endl;
cout << " введите число A" << endl;
}
}
cout << " введите число B" << endl;
while(!readingSuccess1)
{
try
{
getline(cin, str1);
for(int l = 0;str1.size() > l;l++)
{
if ((str1[l]=='0')&&(str1[l+1]!=','))
{
str1.erase(l,1);
--l;
}
else
break;
}
if (str1.find(',') != string::npos)
{
string::reverse_iterator i = str1.rbegin();
for (

i != str1.rend()) && (*i == '0'); ++i);
str1.erase(i.base(), str1.end());
}
std::cout << str1 << std::endl;
if (str1[0]==',')
{
cout << "число не может начинаться с запятой" << "\n";
cout << " введите число B " << "\n";
}
else
{
if (str1.find(',') == string::npos)
n1 = 9;
else
n1 = 10;
}
b = stold(str1, &sz1);
if(str1.size() == sz1)
{
if(str1.size() >= n1)
{
cout <<"длинное число, введите число поменьше " << endl;
}
cin.clear();
cin.sync();
cout << " введите число B " << endl;
}
else
{
readingSuccess1 = true;
}
}
}
else
{
cout << "вы ввели неправильный символ " << endl;
cout << " введите число B " << endl;
}
}
catch(invalid_argument u)
{
cin.clear();
cin.sync();
cout << "вы ввели буквы" << endl;
cout << " введите число B " << endl;
}
}
y = 1 / x - a * pow(x,2) + abs( b * x);
cout << "данное уравнение равно " << y << endl;
system("PAUSE");
}