Mam takie kody:
polynomials.h
#include <iostream>
using namespace std;
class Polynomial
{
public:
virtual void gather()=0;
virtual void show()=0;
};
class Wx :public Polynomial
{
protected:
string userStringNum;
int degree;
int helper;
float *coefficients;
public:
virtual void gather();
virtual void show();
void isInteger(int &d);
Wx(string="0", int=0, int=0);
~Wx();
};
class Px :public Wx
{
public:
virtual void gather();
virtual void show();
Px(string="0", int=0, int=0);
~Px();
};
isInteger.cpp:
#include <iostream>
#include "polynomials.h"
#include <ctype.h> // isdigit()
#include <sstream> // stringstream
using namespace std;
void Wx::isInteger(int &d)
{
int isInt=0;
int decimalCount=0;
bool isIntBool=false;
bool containsSpaces = false;
do
{
getline(cin, userStringNum);
for (int i=0; i<userStringNum.size(); i++)
{
if (isspace(userStringNum[i]))
containsSpaces=true;
}
if (userStringNum[0] == '-')
{
isInt++;
if (userStringNum[1]=='0')
isInt=0;
}
if ((userStringNum[0]=='0' && isdigit(userStringNum[1])))
isInt = 0;
else
{
for (int i=0; i<userStringNum.size(); i++)
{
if (isdigit(userStringNum[i]))
isInt++;
if (userStringNum[i]=='.')
decimalCount++;
}
}
if (decimalCount==1)
isInt=0;
if (isInt==userStringNum.size() && containsSpaces==false)
{
stringstream str_stream_object(userStringNum);
str_stream_object>>d;
isIntBool=1;
}
else
{
cout<<endl;
cout<<"Degree of polynomial has to be an integer greater than 0, try again: ";
isIntBool=0;
isInt=0;
decimalCount=0;
containsSpaces=false;
}
}
while (isIntBool==0);
}
gatherWx:
#include <iostream>
#include "polynomials.h"
using namespace std;
void Wx::gather()
{
cout<<"Input degree of polynomial W(x): ";
isInteger(degree);
cout<<endl;
}
gatherPx:
#include <iostream>
#include "polynomials.h"
using namespace std;
void Px::gather()
{
cout<<"Input degree of polynomial P(x): ";
isInteger(degree);
cout<<endl;
}
jakim cudem isInteger dziala w pliku gatherPx skoro w pliku isInteger jest tylko taki zapis:
void Wx::isInteger(int &d)
nie ma w ogole Px::isInteger