Чтение полинома из файла в C ++? - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь прочитать два полинома из текстового файла в моей программе на C ++, и я написал следующий код, моя проблема в том, что читает только первый , а второй выходит каквсе нули? Кроме того, я думаю, это, вероятно, потому что я знаю, как прекратить чтение первого поли, потому что, очевидно, вы не можете написать:
в то время как (f! = '=')
в любом случае здесьcode:

....
int main()
{
    poly *p1,*p2;
    p1=NULL;
    p2=NULL;
    fstream f;                                               //error: only reading first polynomial
    f.open("input1.txt");
//  string x1="4X7-2X6-1X3+4X2+3X0=0";                  //these are the polynomials im trying to read
//  string x2="2X6+3X2-2X0=0";
    int c,e; 
    char b;
    int x,i=0;
    cout<<"Number of terms of poly 1: ";
    cin>>x;
    while(i<x)
    {
        f>>c>>b>>e;
        cout<<c<<b<<e;
        p1=p1->create(p1,c,b,e);
        i++;
    }
    p1->display(p1);
    cout<<"\nNumber of terms of poly 2: ";
    cin>>x;
    i=0;
    while(i<x)
    {
        f<<endl;
        f>>c>>b>>e;
        cout<<c<<b<<e;
        p2=p2->create(p2,c,b,e);
        i++;
    }
    p1->display(p2);
    poly *p3;
    cout<<"\nThe addition of polynomials is:";
    p3=p3->polyaddition(p1,p2);
    p3->display(p3);
}

Я хотел прочитать полиномы, не спрашивая количество элементов на консоли. Любая помощь будет оценена. Спасибо!

1 Ответ

1 голос
/ 30 октября 2019

Самое важное, что нужно сделать: Написать функцию , которая читает только один мономиальный компонент - следующий на входе. Затем вызывайте его несколько раз, пока не дойдете до конца строки.

Конечно, прежде чем реализует функцию, найдите время, чтобы тщательно рассмотреть, что означает подпись эта функция должна быть;и как должен быть представлен многочлен, когда вы не знаете его степень заранее.

Примечания:

  • Вы обязательно должны позаботиться о проверке ошибок, как предлагает @ user4581301- так что вы не попадете в бесконечный цикл, если чтение не удастся или если вы дойдете до конца строки в середине предполагаемого монома и т. д.
  • Используя эту функцию, вы получитедополнительный бонус, позволяющий избежать дублирования кода при чтении двух полиномов. Чтобы избежать всего этого, напишите вторую функцию, которая читает весь один полином.
...