12,072,809 members (71,524 online)
Rate this:
See more:
Hi
I coded a java class, now I need to change it to C++ code, but I am not expert in C++. Can any body change the code to C++ for me?
plz i need it!!
```public class Polynomial {
private int[] coef;  // coefficients
private int deg;     // degree of polynomial (0 for the zero polynomial)

// a * x^b
public Polynomial(int a, int b) {
coef = new int[b+1];
coef[b] = a;
deg = degree();
}

// return the degree of this polynomial (0 for the zero polynomial)
public int degree() {
int d = 0;
for (int i = 0; i < coef.length; i++)
if (coef[i] != 0) d = i;
return d;
}

// return c = a + b
public Polynomial plus(Polynomial b) {
Polynomial a = this;
Polynomial c = new Polynomial(0, Math.max(a.deg, b.deg));
for (int i = 0; i <= a.deg; i++) c.coef[i] += a.coef[i];
for (int i = 0; i <= b.deg; i++) c.coef[i] += b.coef[i];
c.deg = c.degree();
return c;
}

// return (a - b)
public Polynomial minus(Polynomial b) {
Polynomial a = this;
Polynomial c = new Polynomial(0, Math.max(a.deg, b.deg));
for (int i = 0; i <= a.deg; i++) c.coef[i] += a.coef[i];
for (int i = 0; i <= b.deg; i++) c.coef[i] -= b.coef[i];
c.deg = c.degree();
return c;
}

// return (a * b)
public Polynomial times(Polynomial b) {
Polynomial a = this;
Polynomial c = new Polynomial(0, a.deg + b.deg);
for (int i = 0; i <= a.deg; i++)
for (int j = 0; j <= b.deg; j++)
c.coef[i+j] += (a.coef[i] * b.coef[j]);
c.deg = c.degree();
return c;
}

// return a(b(x))  - compute using Horner's method
public Polynomial compose(Polynomial b) {
Polynomial a = this;
Polynomial c = new Polynomial(0, 0);
for (int i = a.deg; i >= 0; i--) {
Polynomial term = new Polynomial(a.coef[i], 0);
c = term.plus(b.times(c));
}
return c;
}

// do a and b represent the same polynomial?
public boolean eq(Polynomial b) {
Polynomial a = this;
if (a.deg != b.deg) return false;
for (int i = a.deg; i >= 0; i--)
if (a.coef[i] != b.coef[i]) return false;
return true;
}

// use Horner's method to compute and return the polynomial evaluated at x
public int evaluate(int x) {
int p = 0;
for (int i = deg; i >= 0; i--)
p = coef[i] + (x * p);
return p;
}

// differentiate this polynomial and return it
public Polynomial differentiate() {
if (deg == 0) return new Polynomial(0, 0);
Polynomial deriv = new Polynomial(0, deg - 1);
deriv.deg = deg - 1;
for (int i = 0; i < deg; i++)
deriv.coef[i] = (i + 1) * coef[i + 1];
return deriv;
}

// convert to string representation
public String toString() {
if (deg ==  0) return "" + coef[0];
if (deg ==  1) return coef[1] + "x + " + coef[0];
String s = coef[deg] + "x^" + deg;
for (int i = deg-1; i >= 0; i--) {
if      (coef[i] == 0) continue;
else if (coef[i]  > 0) s = s + " + " + ( coef[i]);
else if (coef[i]  < 0) s = s + " - " + (-coef[i]);
if      (i == 1) s = s + "x";
else if (i >  1) s = s + "x^" + i;
}
return s;
}

// test client
public static void main(String[] args) {
Polynomial zero = new Polynomial(0, 0);

Polynomial p1   = new Polynomial(4, 3);
Polynomial p2   = new Polynomial(3, 2);
Polynomial p3   = new Polynomial(1, 0);
Polynomial p4   = new Polynomial(2, 1);
Polynomial p    = p1.plus(p2).plus(p3).plus(p4);   // 4x^3 + 3x^2 + 1

Polynomial q1   = new Polynomial(3, 2);
Polynomial q2   = new Polynomial(5, 0);
Polynomial q    = q1.plus(q2);                     // 3x^2 + 5

Polynomial r    = p.plus(q);
Polynomial s    = p.times(q);
Polynomial t    = p.compose(q);

System.out.println("zero(x) =     " + zero);
System.out.println("p(x) =        " + p);
System.out.println("q(x) =        " + q);
System.out.println("p(x) + q(x) = " + r);
System.out.println("p(x) * q(x) = " + s);
System.out.println("p(q(x))     = " + t);
System.out.println("0 - p(x)    = " + zero.minus(p));
System.out.println("p(3)        = " + p.evaluate(3));
System.out.println("p'(x)       = " + p.differentiate());
System.out.println("p''(x)      = " + p.differentiate().differentiate());
}

}
```
Posted 21-May-11 11:48am
Edited 21-May-11 17:10pm
v4

Rate this:

Solution 2

Yes, you will have many errors. Here are some of the reasons:
- There is no `String` class in C++; you probably want to use `std:string`.
- There is no `Math.max`; you probably want to use `__max`.
- When you use `new` in C++, it returns a pointer; many errors here, plus you're going to have leaks out the wazoo because `delete` is never called.
- There is no `coef.length`; you probably want `__countof()`.
- `this` in C++ is a pointer.

Bottom line: you have to man up and rewrite this in C++ from top to bottom. Since I'm guessing you took a course without having all the prereqs, you will have to ask a friend, or pay someone to do this for you.
DominoBoy 22-May-11 3:31am

thx for help
Rate this:

Solution 3

DominoBoy 22-May-11 3:31am

thx for help
Espen Harlinn 22-May-11 11:28am

Rate this:

Solution 1

Apart from the printing code, this looks like C++ to me. Why do you need to convert it ? Why don't you just try ?
DominoBoy 21-May-11 17:16pm

i need c++ source code because its my school work, and dont have enough time to learn c++!!! i tried to change it my self but i got so many errors!!
Albert Holguin 22-May-11 16:55pm

better approach is to start learning and post some of the errors for help, but no one's going to do you homework
Stefan63 23-May-11 8:42am

Now, there's a start. Look at the errors and see if you can find out what's wrong and how to fix them. The error codes themselves should yield helpful results on Google already, and if not, then would be good point to ask at this forum.

Top Experts
Last 24hrsThis month
 OriginalGriff 455 Dave Kreskowiak 275 CPallini 255 F-ES Sitecore 220 Jochen Arndt 160
 Dave Kreskowiak 2,506 OriginalGriff 2,034 Richard MacCutchan 1,675 CPallini 1,377 CHill60 1,219