0
#include <string>
#include <iostream>
#include <fstream>
#include <list>
using namespace std;

#include "mono.h"

int main()
{
int e;
string m;
string z;
string fname;

mono * mptr;
mono * mptr2;

list<mono>P1;
list<mono>P2;
list<mono>::iterator P1itr;
list<mono>::iterator P2itr;


cout<<"Menu"<<endl<<endl;
cout<<"A Enter two polynomials from a file"<<endl;
cout<<"B Enter two polynomials via keyboard"<<endl;
cout<<"G Quit"<<endl;
cout<<endl;
cout<<"Please enter A, B, or G"<<endl;
cin>>z;


if (z=="A")
    {
cin.ignore();
cout<<"Which file contains your first polonomial?"<<endl<<endl;
system("dir *.txt");
getline(cin,fname);
fstream fin;
fin.open(fname.c_str(),ios::in);

     while (!fin.eof())
     {
           getline(fin, m);
           fin>>e;
           fin.ignore();
           mptr=new mono(m,e);
           P1.push_front(*mptr);
     }
     
     P1.reverse();

//     fin.close();
     P1itr=P1.begin();
     while (P1itr!=P1.end())
     {
           P1itr->display();
           P1itr++;
     }
fin.close();
cout<<endl;     
cout<<"Which file contains your second polonomial?"<<endl<<endl;
getline(cin,fname);
fin.open(fname.c_str(),ios::in);

    while (!fin.eof())
     {
           getline(fin, m);
           fin>>e;
           fin.ignore();
           mptr2=new mono(m,e);
           P2.push_front(*mptr2);
     }

     fin.close();
     P2itr=P2.begin();
     while (P2itr!=P2.end())
     {
           P2itr->display();
           P2itr++;
     }

     }

my mono.h file

class mono
{
  public:
         mono(){}
         mono (string m, int e){monomial=m; exponent=e;}
         
         
         void display(){cout<<" + "<<monomial<<"x^"<<exponent;}
         
         
         bool mono::operator< (const mono &A)const
              {
              if(this->exponent==A.exponent){
              return (this->monomial < A.monomial);}
              return(this->exponent < A.exponent);
              }
         
  private:    
         string monomial;
         int exponent;   
};

The problem I am having is reading from a text file and placing the units into the correct order. The text files have the format of:

4 7
5 4
8 3


And should be read all together as : 4x^7 + 5x^4 + 8x^3 to create the polynomial. When I execute the file it reads:

4 7x^5 + 4x^8 3x^8

I realize it probobly has something to do with my pointers, but i just cant figure out where I am going wrong. I havent programmed in 2 years and now I am trying to dust the ol brain off and am stuck.

1
Contributor
3
Replies
4
Views
8 Years
Discussion Span
Last Post by jwill113
0

Also, when it prompts for second polynomial file, it will let me type the text file in, but will not display like poly1 would do. Essentially I need each polynomial in its own linked list. After I have them in separate linked lists, I have to run code to add the two together or multiply them. In order to do this though, I have to get them in their linked lists first :(

0

I figured out how to get it to read properly (i think). I still can't get poly2.txt to print out the list though.

fstream fin;fin.open(fname.c_str(),ios::in);      
while (!fin.eof())     
{           
fin>>m;  //changed from getline(fin, m);
fin>>e;           
fin.ignore();           
mptr=new mono(m,e);           
P1.push_front(*mptr);     
}     
 P1.reverse();

Edited by jwill113: n/a

0

hmm, all these looks and no one helps me out. Looks like I won't receive a great grade on this homework.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.